diff options
author | Marek Vasut <[email protected]> | 2012-04-19 20:31:02 +0200 |
---|---|---|
committer | Florian Tobias Schandinat <[email protected]> | 2012-04-21 21:53:12 +0000 |
commit | d313a86d2efb2c5568832389663322e93e291c59 (patch) | |
tree | 58a81a04d3775eff55966d84ef46ba2bc3a68c0f | |
parent | 2de06df49f71fee795e997dee1eeda74a2b8598b (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.c | 13 |
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, |