Skip to contentSkip to conversation

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

PATCH New Marek Vasut 4 participants 7 messages Apr 17, 2012 – Apr 23, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 i.MX28: Shut down the LCD controller to avoid bootrom sampling bug

From: Marek Vasut <[email protected]>

Cc Chen Peter-B29397 <[email protected]>
Cc Detlev Zundel <[email protected]>
Cc Fabio Estevam <[email protected]>
Cc Florian Tobias Schandinat <[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 Shawn Guo <[email protected]>
Cc Stefano Babic <[email protected]>
Cc Subodh Nijsure <[email protected]>
Cc Tony Lin <[email protected]>
Cc Wolfgang Denk <[email protected]>
---
 drivers/video/mxsfb.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)
drivers/video/mxsfb.c +13 -0
index 4a89f88..a265356 100644
@@ -880,6 +880,18 @@ static int __devexit mxsfb_remove(struct platform_device *pdev)
 	return 0;
 }
 
+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,
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/1 i.MX28: Shut down the LCD controller to avoid bootrom sampling bug

Dear Marek,

Quoted 18 lines · In message <[email protected]> you wrote:

From: Marek Vasut <[email protected]>

Cc Chen Peter-B29397 <[email protected]>
Cc Detlev Zundel <[email protected]>
Cc Fabio Estevam <[email protected]>
Cc Florian Tobias Schandinat <[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 Shawn Guo <[email protected]>
Cc Stefano Babic <[email protected]>
Cc Subodh Nijsure <[email protected]>
Cc Tony Lin <[email protected]>
Cc Wolfgang Denk <[email protected]>
Quoted 3 lines
---
 drivers/video/mxsfb.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A dog always bit deepest on the veterinary hand.
                                    - Terry Pratchett, _Wyrd Sisters_
#2 lore raw

PATCH 1/1 i.MX28: Shut down the LCD controller to avoid bootrom sampling bug

In reply to Marek Vasut

Hi,

Quoted 1 line · Marek Vasut

From: Marek Vasut <[email protected]>

please write a commit message that describes the bug you want to fix and why/how your patch fixes it.

Thanks,

Florian Tobias Schandinat

Quoted 51 lines
Cc Chen Peter-B29397 <[email protected]>
Cc Detlev Zundel <[email protected]>
Cc Fabio Estevam <[email protected]>
Cc Florian Tobias Schandinat <[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 Shawn Guo <[email protected]>
Cc Stefano Babic <[email protected]>
Cc Subodh Nijsure <[email protected]>
Cc Tony Lin <[email protected]>
Cc Wolfgang Denk <[email protected]>
---
 drivers/video/mxsfb.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)
drivers/video/mxsfb.c +13 -0
index 4a89f88..a265356 100644
@@ -880,6 +880,18 @@ static int __devexit mxsfb_remove(struct platform_device *pdev)
 	return 0;
 }
 
+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,
#3 lore raw

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

In reply to Marek Vasut

From: Marek Vasut <[email protected]>

If there's some traffic on the LCD controller pads, the BootROM has trouble with sampling the bootmode from these pads when the system is restarted from Linux. The BootROM usually ends in a loop.

Cc Chen Peter-B29397 <[email protected]>
Cc Detlev Zundel <[email protected]>
Cc Fabio Estevam <[email protected]>
Cc Florian Tobias Schandinat <[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 Shawn Guo <[email protected]>
Cc Stefano Babic <[email protected]>
Cc Subodh Nijsure <[email protected]>
Cc Tony Lin <[email protected]>
Cc Wolfgang Denk <[email protected]>
---
 drivers/video/mxsfb.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)
drivers/video/mxsfb.c +13 -0
index 4a89f88..a265356 100644
@@ -880,6 +880,18 @@ static int __devexit mxsfb_remove(struct platform_device *pdev)
 	return 0;
 }
 
+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,
Signature · 1 line
1.7.9.5
#4 lore raw

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

On Wed, Apr 18, 2012 at 06:48:00PM +0200, Marek Vasut wrote:
...

Quoted 1 line

+void mxsfb_shutdown(struct platform_device *pdev)

static?

Otherwise,

Quoted 25 lines
drivers/video/mxsfb.c +12 -0
+{
+	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,
Signature · 1 line
1.7.9.5
#5 lore raw

PATCH v2 1/1 i.MX28: Shut down the LCD controller to avoid BootROM sampling bug

In reply to Marek Vasut

From: Marek Vasut <[email protected]>

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.

Cc Chen Peter-B29397 <[email protected]>
Cc Detlev Zundel <[email protected]>
Cc Fabio Estevam <[email protected]>
Cc Florian Tobias Schandinat <[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 Shawn Guo <[email protected]>
Cc Stefano Babic <[email protected]>
Cc Subodh Nijsure <[email protected]>
Cc Tony Lin <[email protected]>
Cc Wolfgang Denk <[email protected]>
---
 drivers/video/mxsfb.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

V2: Make shutdown() call static

drivers/video/mxsfb.c +13 -0
index 4a89f88..dcf29bf 100644
@@ -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,
Signature · 1 line
1.7.9.5
#6 lore raw

PATCH v2 1/1 i.MX28: Shut down the LCD controller to avoid BootROM sampling bug

Quoted 16 lines · Marek Vasut

From: Marek Vasut <[email protected]>

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.

Cc Chen Peter-B29397 <[email protected]>
Cc Detlev Zundel <[email protected]>
Cc Fabio Estevam <[email protected]>
Cc Florian Tobias Schandinat <[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 Shawn Guo <[email protected]>
Quoted 8 lines

Applied.

Thanks,

Florian Tobias Schandinat

Quoted 37 lines
---
 drivers/video/mxsfb.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

V2: Make shutdown() call static

drivers/video/mxsfb.c +13 -0
index 4a89f88..dcf29bf 100644
@@ -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,