On 2007-09-21 19:33 +0100, Chris Jones wrote: > With a little Wookey and Wiki help, attached is the kernel patch to > enable VGA and SVGA outputs on loon 3. There is a config option under > System Type -> Intel PXA2xx Implementations -> Balloon 3 LCD > configuration which allows you to select the display type. This may or > may not be the right place for it, but it works for me. > > I created the patch using quilt on top of the basic balloon3.patch, so > that's where it lives in the series. OK. I'm just incorporating this into the tree. I have a few queries. > Index: linux-2.6.22.2-pristine/arch/arm/mach-pxa/balloon3.c > =================================================================== > --- linux-2.6.22.2-pristine.orig/arch/arm/mach-pxa/balloon3.c 2007-09-21 18:12:05.000000000 +0000 > +++ linux-2.6.22.2-pristine/arch/arm/mach-pxa/balloon3.c 2007-09-21 18:13:05.000000000 +0000 > @@ -281,8 +281,20 @@ > #endif > } > > +// note here that only certain values of pixclock make sense, because the pixel clock > +// is derived by dividing LCLK (104MHz) by an integer even though it's specified down > +// to the picosecond. > +// The divisor integer must be even if LCCR4_PCCDIV is not set, but can be odd if > +// LCCR4_PCDDIV is set. > +// Divisor pixclock Pixel clock frequency > +// 6 57600 17.333MHz > +// 5 48000 20.8MHz *requires LCCR4_PCDDIV set* > +// 4 38400 26MHz > +// 3 28800 34.667MHz *requires LCCR4_PCDDIV set* > +// 2 19200 52MHz *generally too high to be useful, leaves no DMA bandwidth for anything else * > + > #ifdef CONFIG_BALLOON3_TOPPOLY > -static struct pxafb_mode_info toppoly_mode __initdata = { > +static struct pxafb_mode_info balloon3_lcd_mode __initdata = { > .pixclock = 38000, It just said above that this should be 38400 - so is 38000 right or shouold be fixed? I assume the latter. > + .lccr4 = 0, I had to re-do the definition in the relevant struct in pxafb.h for some reason. It seems traditional to also have a comment like this one for the LCCR3 register: /* The following should be defined in LCCR3 * LCCR3_OutEnH or LCCR3_OutEnL Output enable polarity * LCCR3_PixRsEdg or LCCR3_PixFlEdg Pixel clock edge type * LCCR3_Acb(X) AB Bias pin frequency * LCCR3_DPC (optional) Double Pixel Clock mode (untested) * * The following should not be defined in LCCR3 * LCCR3_HSP, LCCR3_VSP, LCCR0_Pcd(x), LCCR3_Bpp */ I have no idea which bits should/shouldn't be set in general pxa terms. I've put: /* The following should be defined in LCCR4 * LCCR4_PCDDIV (if odd pixclock divisor required) seem reasonable? I'll just check it builds and doesn't break hardware here (I only have topopoly, not VGA/SVGA hardware), then check in. Wookey -- Principal hats: Balloonz - Toby Churchill - Aleph One - Debian http://wookware.org/