Re: [PATCH] ARM: PXA: Make PXA27x/PXA3xx overlay actually work
flat view
STALE5688d
From: Eric Miao <hidden>
Date: 2011-02-15 13:36:07
Also in:
linux-arm-kernel
On Tue, Feb 15, 2011 at 7:58 PM, Vasily Khoruzhick [off-list ref] wrote:
On Tuesday 15 February 2011 13:51:06 Eric Miao wrote:quoted
quoted
quoted
quoted
lcd_writel(fbi, FDADR0, fbi->fdadr[0]); - lcd_writel(fbi, FDADR1, fbi->fdadr[1]); + if (fbi->lccr0 & LCCR0_SDS) + lcd_writel(fbi, FDADR1, fbi->fdadr[1]);My original intention was to simplify the code a bit by ignoring LCCR0_SDS, as FDADR1 would not take effect if not enabled even if it's being read/written.It leads to potential race condition when you try to reconfigure main plane and overlay1 simultaneously.You are right on this.quoted
quoted
quoted
+#ifdef CONFIG_FB_PXA_OVERLAY + if (cpu_is_pxa27x()) + fbi->lccr0 |= LCCR0_OUC; +#endif +I seem to remember LCCR0_OUC is still valid on pxa3xx, did you do some test on pxa3xx as well?Sorry, I have no any pxa3xx boards.That's all right, I can give it a test later. The point is, why did you move the code here from pxafb_overlay_init()?Because otherwise correct plane order (overlays on top) will be selected only on next main plane reconfigure.
Then maybe in this way? (I'd rather keep this bit in overlay specific code, and make it valid not only to pxa27x)
@@ -925,6 +925,8 @@ static int __devinit pxafb_overlay_init(structpxafb_info *fbi)
/* place overlay(s) on top of base */
fbi->lccr0 |= LCCR0_OUC;
+ lcd_writel(fbi, LCCR0, fbi->lccr0 & ~LCCR0_ENB);
+
pr_info("PXA Overlay driver loaded successfully!\n");
return 0;
Regards Vasily