[PATCH] ARM: PXA: Make PXA27x/PXA3xx overlay actually work
Eric Miao
eric.y.miao at gmail.com
Tue Feb 15 08:36:07 EST 2011
On Tue, Feb 15, 2011 at 7:58 PM, Vasily Khoruzhick <anarsoul at gmail.com> wrote:
> On Tuesday 15 February 2011 13:51:06 Eric Miao wrote:
>> >> > 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.
>>
>> >> > +#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(struct
pxafb_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
>
More information about the linux-arm-kernel
mailing list