aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <[email protected]>2012-04-19 20:31:02 +0200
committerFlorian Tobias Schandinat <[email protected]>2012-04-21 21:53:12 +0000
commitd313a86d2efb2c5568832389663322e93e291c59 (patch)
tree58a81a04d3775eff55966d84ef46ba2bc3a68c0f
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 <[email protected]> Cc: Chen Peter-B29397 <[email protected]> Cc: Detlev Zundel <[email protected]> Cc: Fabio Estevam <[email protected]> Cc: Li Frank-B20596 <[email protected]> Cc: Lin Tony-B19295 <[email protected]> Cc: Linux FBDEV <[email protected]> Cc: Sascha Hauer <[email protected]> Cc: Shawn Guo <[email protected]> Cc: Stefano Babic <[email protected]> Cc: Subodh Nijsure <[email protected]> Cc: Tony Lin <[email protected]> Acked-by: Shawn Guo <[email protected]> Acked-by: Wolfgang Denk <[email protected]> Acked-by: Wolfram Sang <[email protected]> Tested-by: Wolfgang Denk <[email protected]> Signed-off-by: Florian Tobias Schandinat <[email protected]>
-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,