aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@net.rmk.(none)>2006-09-20 17:54:21 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-10-02 08:33:37 -0400
commitd14b272bc63f35a8f20b4b1df16c080b8d24f8f1 (patch)
treef754f3b333388e0ab78c934fd492906688fab2a6 /arch/arm/mach-pxa
parentc5d311c7e93c7d84941028835bc6ae5e1bc4e73c (diff)
[ARM] 3848/1: pxafb: Add option of fixing video modes and spitz QVGA mode support
Add the ability to have pxafb use only certain fixed video modes (selected on a per platform basis). This is useful on production hardware such as the Zaurus cxx00 models where the valid modes are known in advance and any other modes could result in hardware damage. Following this, add support for the cxx00 QVGA mode. Mode information is passed to the lcd_power call to allowing the panel drivers to configure the display hardware accordingly (corgi_lcd already contains the functionality for the cxx00 panel). This mirrors the setup already used by w100fb. Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r--arch/arm/mach-pxa/corgi_lcd.c4
-rw-r--r--arch/arm/mach-pxa/generic.c13
-rw-r--r--arch/arm/mach-pxa/idp.c9
-rw-r--r--arch/arm/mach-pxa/lpd270.c42
-rw-r--r--arch/arm/mach-pxa/lubbock.c7
-rw-r--r--arch/arm/mach-pxa/mainstone.c17
-rw-r--r--arch/arm/mach-pxa/poodle.c12
-rw-r--r--arch/arm/mach-pxa/spitz.c51
-rw-r--r--arch/arm/mach-pxa/trizeps4.c7
9 files changed, 113 insertions, 49 deletions
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c
index 6dbcaf114ad7..d7815491b752 100644
--- a/arch/arm/mach-pxa/corgi_lcd.c
+++ b/arch/arm/mach-pxa/corgi_lcd.c
@@ -431,10 +431,10 @@ struct platform_device corgifb_device = {
431 431
432#include <asm/arch/pxafb.h> 432#include <asm/arch/pxafb.h>
433 433
434void spitz_lcd_power(int on) 434void spitz_lcd_power(int on, struct fb_var_screeninfo *var)
435{ 435{
436 if (on) 436 if (on)
437 lcdtg_hw_init(480); 437 lcdtg_hw_init(var->xres);
438 else 438 else
439 lcdtg_suspend(); 439 lcdtg_suspend();
440} 440}
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c
index 5efa84749f37..45fb2c3bcf82 100644
--- a/arch/arm/mach-pxa/generic.c
+++ b/arch/arm/mach-pxa/generic.c
@@ -204,13 +204,6 @@ static struct platform_device udc_device = {
204 } 204 }
205}; 205};
206 206
207static struct pxafb_mach_info pxa_fb_info;
208
209void __init set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info)
210{
211 memcpy(&pxa_fb_info,hard_pxa_fb_info,sizeof(struct pxafb_mach_info));
212}
213
214static struct resource pxafb_resources[] = { 207static struct resource pxafb_resources[] = {
215 [0] = { 208 [0] = {
216 .start = 0x44000000, 209 .start = 0x44000000,
@@ -230,7 +223,6 @@ static struct platform_device pxafb_device = {
230 .name = "pxa2xx-fb", 223 .name = "pxa2xx-fb",
231 .id = -1, 224 .id = -1,
232 .dev = { 225 .dev = {
233 .platform_data = &pxa_fb_info,
234 .dma_mask = &fb_dma_mask, 226 .dma_mask = &fb_dma_mask,
235 .coherent_dma_mask = 0xffffffff, 227 .coherent_dma_mask = 0xffffffff,
236 }, 228 },
@@ -238,6 +230,11 @@ static struct platform_device pxafb_device = {
238 .resource = pxafb_resources, 230 .resource = pxafb_resources,
239}; 231};
240 232
233void __init set_pxa_fb_info(struct pxafb_mach_info *info)
234{
235 pxafb_device.dev.platform_data = info;
236}
237
241void __init set_pxa_fb_parent(struct device *parent_dev) 238void __init set_pxa_fb_parent(struct device *parent_dev)
242{ 239{
243 pxafb_device.dev.parent = parent_dev; 240 pxafb_device.dev.parent = parent_dev;
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c
index 6914d22bc20f..3e4b0ab71c66 100644
--- a/arch/arm/mach-pxa/idp.c
+++ b/arch/arm/mach-pxa/idp.c
@@ -82,7 +82,7 @@ static void idp_vlcd(int on)
82 } 82 }
83} 83}
84 84
85static void idp_lcd_power(int on) 85static void idp_lcd_power(int on, struct fb_var_screeninfo *var)
86{ 86{
87 if (on) { 87 if (on) {
88 IDP_CPLD_LCD |= (1<<0); 88 IDP_CPLD_LCD |= (1<<0);
@@ -99,7 +99,7 @@ static void idp_lcd_power(int on)
99 idp_vlcd(on); 99 idp_vlcd(on);
100} 100}
101 101
102static struct pxafb_mach_info sharp_lm8v31 __initdata = { 102static struct pxafb_mode_info sharp_lm8v31_mode = {
103 .pixclock = 270000, 103 .pixclock = 270000,
104 .xres = 640, 104 .xres = 640,
105 .yres = 480, 105 .yres = 480,
@@ -112,6 +112,11 @@ static struct pxafb_mach_info sharp_lm8v31 __initdata = {
112 .lower_margin = 0, 112 .lower_margin = 0,
113 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 113 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
114 .cmap_greyscale = 0, 114 .cmap_greyscale = 0,
115};
116
117static struct pxafb_mach_info sharp_lm8v31 = {
118 .modes = &sharp_lm8v31_mode,
119 .num_modes = 1,
115 .cmap_inverse = 0, 120 .cmap_inverse = 0,
116 .cmap_static = 0, 121 .cmap_static = 0,
117 .lccr0 = LCCR0_SDS, 122 .lccr0 = LCCR0_SDS,
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c
index 12479ae26db2..eff2a91b2565 100644
--- a/arch/arm/mach-pxa/lpd270.c
+++ b/arch/arm/mach-pxa/lpd270.c
@@ -248,7 +248,7 @@ static void lpd270_backlight_power(int on)
248} 248}
249 249
250/* 5.7" TFT QVGA (LoLo display number 1) */ 250/* 5.7" TFT QVGA (LoLo display number 1) */
251static struct pxafb_mach_info sharp_lq057q3dc02 __initdata = { 251static struct pxafb_mode_info sharp_lq057q3dc02_mode = {
252 .pixclock = 150000, 252 .pixclock = 150000,
253 .xres = 320, 253 .xres = 320,
254 .yres = 240, 254 .yres = 240,
@@ -260,13 +260,18 @@ static struct pxafb_mach_info sharp_lq057q3dc02 __initdata = {
260 .upper_margin = 0x08, 260 .upper_margin = 0x08,
261 .lower_margin = 0x14, 261 .lower_margin = 0x14,
262 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 262 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
263};
264
265static struct pxafb_mach_info sharp_lq057q3dc02 = {
266 .modes = &sharp_lq057q3dc02_mode,
267 .num_modes = 1,
263 .lccr0 = 0x07800080, 268 .lccr0 = 0x07800080,
264 .lccr3 = 0x00400000, 269 .lccr3 = 0x00400000,
265 .pxafb_backlight_power = lpd270_backlight_power, 270 .pxafb_backlight_power = lpd270_backlight_power,
266}; 271};
267 272
268/* 12.1" TFT SVGA (LoLo display number 2) */ 273/* 12.1" TFT SVGA (LoLo display number 2) */
269static struct pxafb_mach_info sharp_lq121s1dg31 __initdata = { 274static struct pxafb_mode_info sharp_lq121s1dg31_mode = {
270 .pixclock = 50000, 275 .pixclock = 50000,
271 .xres = 800, 276 .xres = 800,
272 .yres = 600, 277 .yres = 600,
@@ -278,13 +283,18 @@ static struct pxafb_mach_info sharp_lq121s1dg31 __initdata = {
278 .upper_margin = 0x14, 283 .upper_margin = 0x14,
279 .lower_margin = 0x0a, 284 .lower_margin = 0x0a,
280 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 285 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
286};
287
288static struct pxafb_mach_info sharp_lq121s1dg31 = {
289 .modes = &sharp_lq121s1dg31_mode,
290 .num_modes = 1,
281 .lccr0 = 0x07800080, 291 .lccr0 = 0x07800080,
282 .lccr3 = 0x00400000, 292 .lccr3 = 0x00400000,
283 .pxafb_backlight_power = lpd270_backlight_power, 293 .pxafb_backlight_power = lpd270_backlight_power,
284}; 294};
285 295
286/* 3.6" TFT QVGA (LoLo display number 3) */ 296/* 3.6" TFT QVGA (LoLo display number 3) */
287static struct pxafb_mach_info sharp_lq036q1da01 __initdata = { 297static struct pxafb_mode_info sharp_lq036q1da01_mode = {
288 .pixclock = 150000, 298 .pixclock = 150000,
289 .xres = 320, 299 .xres = 320,
290 .yres = 240, 300 .yres = 240,
@@ -296,13 +306,18 @@ static struct pxafb_mach_info sharp_lq036q1da01 __initdata = {
296 .upper_margin = 0x03, 306 .upper_margin = 0x03,
297 .lower_margin = 0x03, 307 .lower_margin = 0x03,
298 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 308 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
309};
310
311static struct pxafb_mach_info sharp_lq036q1da01 = {
312 .modes = &sharp_lq036q1da01_mode,
313 .num_modes = 1,
299 .lccr0 = 0x07800080, 314 .lccr0 = 0x07800080,
300 .lccr3 = 0x00400000, 315 .lccr3 = 0x00400000,
301 .pxafb_backlight_power = lpd270_backlight_power, 316 .pxafb_backlight_power = lpd270_backlight_power,
302}; 317};
303 318
304/* 6.4" TFT VGA (LoLo display number 5) */ 319/* 6.4" TFT VGA (LoLo display number 5) */
305static struct pxafb_mach_info sharp_lq64d343 __initdata = { 320static struct pxafb_mode_info sharp_lq64d343_mode = {
306 .pixclock = 25000, 321 .pixclock = 25000,
307 .xres = 640, 322 .xres = 640,
308 .yres = 480, 323 .yres = 480,
@@ -314,13 +329,18 @@ static struct pxafb_mach_info sharp_lq64d343 __initdata = {
314 .upper_margin = 0x22, 329 .upper_margin = 0x22,
315 .lower_margin = 0x00, 330 .lower_margin = 0x00,
316 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 331 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
332};
333
334static struct pxafb_mach_info sharp_lq64d343 = {
335 .modes = &sharp_lq64d343_mode,
336 .num_modes = 1,
317 .lccr0 = 0x07800080, 337 .lccr0 = 0x07800080,
318 .lccr3 = 0x00400000, 338 .lccr3 = 0x00400000,
319 .pxafb_backlight_power = lpd270_backlight_power, 339 .pxafb_backlight_power = lpd270_backlight_power,
320}; 340};
321 341
322/* 10.4" TFT VGA (LoLo display number 7) */ 342/* 10.4" TFT VGA (LoLo display number 7) */
323static struct pxafb_mach_info sharp_lq10d368 __initdata = { 343static struct pxafb_mode_info sharp_lq10d368_mode = {
324 .pixclock = 25000, 344 .pixclock = 25000,
325 .xres = 640, 345 .xres = 640,
326 .yres = 480, 346 .yres = 480,
@@ -332,13 +352,18 @@ static struct pxafb_mach_info sharp_lq10d368 __initdata = {
332 .upper_margin = 0x22, 352 .upper_margin = 0x22,
333 .lower_margin = 0x00, 353 .lower_margin = 0x00,
334 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 354 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
355};
356
357static struct pxafb_mach_info sharp_lq10d368 = {
358 .modes = &sharp_lq10d368_mode,
359 .num_modes = 1,
335 .lccr0 = 0x07800080, 360 .lccr0 = 0x07800080,
336 .lccr3 = 0x00400000, 361 .lccr3 = 0x00400000,
337 .pxafb_backlight_power = lpd270_backlight_power, 362 .pxafb_backlight_power = lpd270_backlight_power,
338}; 363};
339 364
340/* 3.5" TFT QVGA (LoLo display number 8) */ 365/* 3.5" TFT QVGA (LoLo display number 8) */
341static struct pxafb_mach_info sharp_lq035q7db02_20 __initdata = { 366static struct pxafb_mode_info sharp_lq035q7db02_20_mode = {
342 .pixclock = 150000, 367 .pixclock = 150000,
343 .xres = 240, 368 .xres = 240,
344 .yres = 320, 369 .yres = 320,
@@ -350,6 +375,11 @@ static struct pxafb_mach_info sharp_lq035q7db02_20 __initdata = {
350 .upper_margin = 0x05, 375 .upper_margin = 0x05,
351 .lower_margin = 0x14, 376 .lower_margin = 0x14,
352 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 377 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
378};
379
380static struct pxafb_mach_info sharp_lq035q7db02_20 = {
381 .modes = &sharp_lq035q7db02_20_mode,
382 .num_modes = 1,
353 .lccr0 = 0x07800080, 383 .lccr0 = 0x07800080,
354 .lccr3 = 0x00400000, 384 .lccr3 = 0x00400000,
355 .pxafb_backlight_power = lpd270_backlight_power, 385 .pxafb_backlight_power = lpd270_backlight_power,
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 83ff5cee64d9..157cf47cbe66 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -352,7 +352,7 @@ static struct platform_device *devices[] __initdata = {
352 &pxa_ssp, 352 &pxa_ssp,
353}; 353};
354 354
355static struct pxafb_mach_info sharp_lm8v31 __initdata = { 355static struct pxafb_mode_info sharp_lm8v31_mode = {
356 .pixclock = 270000, 356 .pixclock = 270000,
357 .xres = 640, 357 .xres = 640,
358 .yres = 480, 358 .yres = 480,
@@ -365,6 +365,11 @@ static struct pxafb_mach_info sharp_lm8v31 __initdata = {
365 .lower_margin = 0, 365 .lower_margin = 0,
366 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 366 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
367 .cmap_greyscale = 0, 367 .cmap_greyscale = 0,
368};
369
370static struct pxafb_mach_info sharp_lm8v31 = {
371 .modes = &sharp_lm8v31_mode,
372 .num_modes = 1,
368 .cmap_inverse = 0, 373 .cmap_inverse = 0,
369 .cmap_static = 0, 374 .cmap_static = 0,
370 .lccr0 = LCCR0_SDS, 375 .lccr0 = LCCR0_SDS,
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index a7e9b96f258a..7ba0447d6fa3 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -279,7 +279,7 @@ static void mainstone_backlight_power(int on)
279 } 279 }
280} 280}
281 281
282static struct pxafb_mach_info toshiba_ltm04c380k __initdata = { 282static struct pxafb_mode_info toshiba_ltm04c380k_mode = {
283 .pixclock = 50000, 283 .pixclock = 50000,
284 .xres = 640, 284 .xres = 640,
285 .yres = 480, 285 .yres = 480,
@@ -291,12 +291,9 @@ static struct pxafb_mach_info toshiba_ltm04c380k __initdata = {
291 .upper_margin = 0, 291 .upper_margin = 0,
292 .lower_margin = 0, 292 .lower_margin = 0,
293 .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, 293 .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
294 .lccr0 = LCCR0_Act,
295 .lccr3 = LCCR3_PCP,
296 .pxafb_backlight_power = mainstone_backlight_power,
297}; 294};
298 295
299static struct pxafb_mach_info toshiba_ltm035a776c __initdata = { 296static struct pxafb_mode_info toshiba_ltm035a776c_mode = {
300 .pixclock = 110000, 297 .pixclock = 110000,
301 .xres = 240, 298 .xres = 240,
302 .yres = 320, 299 .yres = 320,
@@ -308,6 +305,10 @@ static struct pxafb_mach_info toshiba_ltm035a776c __initdata = {
308 .upper_margin = 1, 305 .upper_margin = 1,
309 .lower_margin = 10, 306 .lower_margin = 10,
310 .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, 307 .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
308};
309
310static struct pxafb_mach_info mainstone_pxafb_info = {
311 .num_modes = 1,
311 .lccr0 = LCCR0_Act, 312 .lccr0 = LCCR0_Act,
312 .lccr3 = LCCR3_PCP, 313 .lccr3 = LCCR3_PCP,
313 .pxafb_backlight_power = mainstone_backlight_power, 314 .pxafb_backlight_power = mainstone_backlight_power,
@@ -448,9 +449,11 @@ static void __init mainstone_init(void)
448 /* reading Mainstone's "Virtual Configuration Register" 449 /* reading Mainstone's "Virtual Configuration Register"
449 might be handy to select LCD type here */ 450 might be handy to select LCD type here */
450 if (0) 451 if (0)
451 set_pxa_fb_info(&toshiba_ltm04c380k); 452 mainstone_pxafb_info.modes = &toshiba_ltm04c380k_mode;
452 else 453 else
453 set_pxa_fb_info(&toshiba_ltm035a776c); 454 mainstone_pxafb_info.modes = &toshiba_ltm035a776c_mode;
455
456 set_pxa_fb_info(&mainstone_pxafb_info);
454 457
455 pxa_set_mci_info(&mainstone_mci_platform_data); 458 pxa_set_mci_info(&mainstone_mci_platform_data);
456 pxa_set_ficp_info(&mainstone_ficp_platform_data); 459 pxa_set_ficp_info(&mainstone_ficp_platform_data);
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 6dbff6d94801..5e8c098ca139 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -296,27 +296,25 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
296 296
297 297
298/* PXAFB device */ 298/* PXAFB device */
299static struct pxafb_mach_info poodle_fb_info __initdata = { 299static struct pxafb_mode_info poodle_fb_mode = {
300 .pixclock = 144700, 300 .pixclock = 144700,
301
302 .xres = 320, 301 .xres = 320,
303 .yres = 240, 302 .yres = 240,
304 .bpp = 16, 303 .bpp = 16,
305
306 .hsync_len = 7, 304 .hsync_len = 7,
307 .left_margin = 11, 305 .left_margin = 11,
308 .right_margin = 30, 306 .right_margin = 30,
309
310 .vsync_len = 2, 307 .vsync_len = 2,
311 .upper_margin = 2, 308 .upper_margin = 2,
312 .lower_margin = 0, 309 .lower_margin = 0,
313 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 310 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
311};
314 312
313static struct pxafb_mach_info poodle_fb_info = {
314 .modes = &poodle_fb_mode,
315 .num_modes = 1,
315 .lccr0 = LCCR0_Act | LCCR0_Sngl | LCCR0_Color, 316 .lccr0 = LCCR0_Act | LCCR0_Sngl | LCCR0_Color,
316 .lccr3 = 0, 317 .lccr3 = 0,
317
318 .pxafb_backlight_power = NULL,
319 .pxafb_lcd_power = NULL,
320}; 318};
321 319
322static struct platform_device *devices[] __initdata = { 320static struct platform_device *devices[] __initdata = {
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 1c32a9310dc2..401cdb850fbc 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -407,21 +407,42 @@ static struct pxaficp_platform_data spitz_ficp_platform_data = {
407/* 407/*
408 * Spitz PXA Framebuffer 408 * Spitz PXA Framebuffer
409 */ 409 */
410static struct pxafb_mach_info spitz_pxafb_info __initdata = { 410
411 .pixclock = 19231, 411static struct pxafb_mode_info spitz_pxafb_modes[] = {
412 .xres = 480, 412{
413 .yres = 640, 413 .pixclock = 19231,
414 .bpp = 16, 414 .xres = 480,
415 .hsync_len = 40, 415 .yres = 640,
416 .left_margin = 46, 416 .bpp = 16,
417 .right_margin = 125, 417 .hsync_len = 40,
418 .vsync_len = 3, 418 .left_margin = 46,
419 .upper_margin = 1, 419 .right_margin = 125,
420 .lower_margin = 0, 420 .vsync_len = 3,
421 .sync = 0, 421 .upper_margin = 1,
422 .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act | LCCR0_LDDALT | LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM, 422 .lower_margin = 0,
423 .lccr3 = LCCR3_PixRsEdg | LCCR3_OutEnH, 423 .sync = 0,
424 .pxafb_lcd_power = spitz_lcd_power, 424},{
425 .pixclock = 134617,
426 .xres = 240,
427 .yres = 320,
428 .bpp = 16,
429 .hsync_len = 20,
430 .left_margin = 20,
431 .right_margin = 46,
432 .vsync_len = 2,
433 .upper_margin = 1,
434 .lower_margin = 0,
435 .sync = 0,
436},
437};
438
439static struct pxafb_mach_info spitz_pxafb_info = {
440 .modes = &spitz_pxafb_modes[0],
441 .num_modes = 2,
442 .fixed_modes = 1,
443 .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act | LCCR0_LDDALT | LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM,
444 .lccr3 = LCCR3_PixRsEdg | LCCR3_OutEnH,
445 .pxafb_lcd_power = spitz_lcd_power,
425}; 446};
426 447
427 448
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 7c3007df1bd6..910571e9a190 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -368,7 +368,7 @@ static struct map_desc trizeps4_io_desc[] __initdata = {
368 } 368 }
369}; 369};
370 370
371static struct pxafb_mach_info sharp_lcd __initdata = { 371static struct pxafb_mode_info sharp_lcd_mode = {
372 .pixclock = 78000, 372 .pixclock = 78000,
373 .xres = 640, 373 .xres = 640,
374 .yres = 480, 374 .yres = 480,
@@ -381,6 +381,11 @@ static struct pxafb_mach_info sharp_lcd __initdata = {
381 .lower_margin = 0, 381 .lower_margin = 0,
382 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, 382 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
383 .cmap_greyscale = 0, 383 .cmap_greyscale = 0,
384};
385
386static struct pxafb_mach_info sharp_lcd = {
387 .modes = &sharp_lcd_mode,
388 .num_modes = 1,
384 .cmap_inverse = 0, 389 .cmap_inverse = 0,
385 .cmap_static = 0, 390 .cmap_static = 0,
386 .lccr0 = LCCR0_Color | LCCR0_Pas | LCCR0_Dual, 391 .lccr0 = LCCR0_Color | LCCR0_Pas | LCCR0_Dual,