diff options
author | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2012-03-20 04:49:51 -0400 |
---|---|---|
committer | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2012-03-20 04:49:51 -0400 |
commit | e9fe8a714e450b26f76eaf8832f5b9fe24d00e79 (patch) | |
tree | 78d0045cfdede7ad7e42181bde96978fdc792e06 /arch/arm | |
parent | f413070e3f0bccb40ca939b90699347daf815607 (diff) | |
parent | df01d53068bdf31609aafd9a857901a1f16dfa52 (diff) |
Merge branch 'for-3.4' of git://gitorious.org/linux-omap-dss2/linux into fbdev-next
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-omap1/board-ams-delta.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-fsample.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h2.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-htcherald.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-innovator.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-nokia770.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-osk.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmte.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmtt.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmz71.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-perseus2.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-sx1.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-omap2/io.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/common.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/fb.c | 334 | ||||
-rw-r--r-- | arch/arm/plat-omap/fb.h | 10 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/blizzard.h | 12 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/board.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/hwa742.h | 8 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/vram.h | 21 |
21 files changed, 56 insertions, 496 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 88909cc0b254..e0e8245f3c9f 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/serial_8250.h> | 21 | #include <linux/serial_8250.h> |
22 | #include <linux/export.h> | 22 | #include <linux/export.h> |
23 | #include <linux/omapfb.h> | ||
23 | 24 | ||
24 | #include <media/soc_camera.h> | 25 | #include <media/soc_camera.h> |
25 | 26 | ||
@@ -169,10 +170,6 @@ static struct omap_usb_config ams_delta_usb_config __initdata = { | |||
169 | .pins[0] = 2, | 170 | .pins[0] = 2, |
170 | }; | 171 | }; |
171 | 172 | ||
172 | static struct omap_board_config_kernel ams_delta_config[] __initdata = { | ||
173 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, | ||
174 | }; | ||
175 | |||
176 | static struct resource ams_delta_nand_resources[] = { | 173 | static struct resource ams_delta_nand_resources[] = { |
177 | [0] = { | 174 | [0] = { |
178 | .start = OMAP1_MPUIO_BASE, | 175 | .start = OMAP1_MPUIO_BASE, |
@@ -302,8 +299,6 @@ static void __init ams_delta_init(void) | |||
302 | omap_cfg_reg(J19_1610_CAM_D6); | 299 | omap_cfg_reg(J19_1610_CAM_D6); |
303 | omap_cfg_reg(J18_1610_CAM_D7); | 300 | omap_cfg_reg(J18_1610_CAM_D7); |
304 | 301 | ||
305 | omap_board_config = ams_delta_config; | ||
306 | omap_board_config_size = ARRAY_SIZE(ams_delta_config); | ||
307 | omap_serial_init(); | 302 | omap_serial_init(); |
308 | omap_register_i2c_bus(1, 100, NULL, 0); | 303 | omap_register_i2c_bus(1, 100, NULL, 0); |
309 | 304 | ||
@@ -321,6 +316,8 @@ static void __init ams_delta_init(void) | |||
321 | ams_delta_init_fiq(); | 316 | ams_delta_init_fiq(); |
322 | 317 | ||
323 | omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1); | 318 | omap_writew(omap_readw(ARM_RSTCT1) | 0x0004, ARM_RSTCT1); |
319 | |||
320 | omapfb_set_lcd_config(&ams_delta_lcd_config); | ||
324 | } | 321 | } |
325 | 322 | ||
326 | static struct plat_serial8250_port ams_delta_modem_ports[] = { | 323 | static struct plat_serial8250_port ams_delta_modem_ports[] = { |
diff --git a/arch/arm/mach-omap1/board-fsample.c b/arch/arm/mach-omap1/board-fsample.c index 0b9464b41212..7afaf3c5bdc6 100644 --- a/arch/arm/mach-omap1/board-fsample.c +++ b/arch/arm/mach-omap1/board-fsample.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
22 | #include <linux/input.h> | 22 | #include <linux/input.h> |
23 | #include <linux/smc91x.h> | 23 | #include <linux/smc91x.h> |
24 | #include <linux/omapfb.h> | ||
24 | 25 | ||
25 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
26 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
@@ -273,27 +274,17 @@ static struct platform_device kp_device = { | |||
273 | .resource = kp_resources, | 274 | .resource = kp_resources, |
274 | }; | 275 | }; |
275 | 276 | ||
276 | static struct platform_device lcd_device = { | ||
277 | .name = "lcd_p2", | ||
278 | .id = -1, | ||
279 | }; | ||
280 | |||
281 | static struct platform_device *devices[] __initdata = { | 277 | static struct platform_device *devices[] __initdata = { |
282 | &nor_device, | 278 | &nor_device, |
283 | &nand_device, | 279 | &nand_device, |
284 | &smc91x_device, | 280 | &smc91x_device, |
285 | &kp_device, | 281 | &kp_device, |
286 | &lcd_device, | ||
287 | }; | 282 | }; |
288 | 283 | ||
289 | static struct omap_lcd_config fsample_lcd_config = { | 284 | static struct omap_lcd_config fsample_lcd_config = { |
290 | .ctrl_name = "internal", | 285 | .ctrl_name = "internal", |
291 | }; | 286 | }; |
292 | 287 | ||
293 | static struct omap_board_config_kernel fsample_config[] __initdata = { | ||
294 | { OMAP_TAG_LCD, &fsample_lcd_config }, | ||
295 | }; | ||
296 | |||
297 | static void __init omap_fsample_init(void) | 288 | static void __init omap_fsample_init(void) |
298 | { | 289 | { |
299 | /* Early, board-dependent init */ | 290 | /* Early, board-dependent init */ |
@@ -352,10 +343,10 @@ static void __init omap_fsample_init(void) | |||
352 | 343 | ||
353 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 344 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
354 | 345 | ||
355 | omap_board_config = fsample_config; | ||
356 | omap_board_config_size = ARRAY_SIZE(fsample_config); | ||
357 | omap_serial_init(); | 346 | omap_serial_init(); |
358 | omap_register_i2c_bus(1, 100, NULL, 0); | 347 | omap_register_i2c_bus(1, 100, NULL, 0); |
348 | |||
349 | omapfb_set_lcd_config(&fsample_lcd_config); | ||
359 | } | 350 | } |
360 | 351 | ||
361 | /* Only FPGA needs to be mapped here. All others are done with ioremap */ | 352 | /* Only FPGA needs to be mapped here. All others are done with ioremap */ |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 00ad6b22d60a..af2be8c12c07 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/input.h> | 30 | #include <linux/input.h> |
31 | #include <linux/i2c/tps65010.h> | 31 | #include <linux/i2c/tps65010.h> |
32 | #include <linux/smc91x.h> | 32 | #include <linux/smc91x.h> |
33 | #include <linux/omapfb.h> | ||
33 | 34 | ||
34 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
35 | 36 | ||
@@ -325,18 +326,12 @@ static struct platform_device h2_irda_device = { | |||
325 | .resource = h2_irda_resources, | 326 | .resource = h2_irda_resources, |
326 | }; | 327 | }; |
327 | 328 | ||
328 | static struct platform_device h2_lcd_device = { | ||
329 | .name = "lcd_h2", | ||
330 | .id = -1, | ||
331 | }; | ||
332 | |||
333 | static struct platform_device *h2_devices[] __initdata = { | 329 | static struct platform_device *h2_devices[] __initdata = { |
334 | &h2_nor_device, | 330 | &h2_nor_device, |
335 | &h2_nand_device, | 331 | &h2_nand_device, |
336 | &h2_smc91x_device, | 332 | &h2_smc91x_device, |
337 | &h2_irda_device, | 333 | &h2_irda_device, |
338 | &h2_kp_device, | 334 | &h2_kp_device, |
339 | &h2_lcd_device, | ||
340 | }; | 335 | }; |
341 | 336 | ||
342 | static void __init h2_init_smc91x(void) | 337 | static void __init h2_init_smc91x(void) |
@@ -391,10 +386,6 @@ static struct omap_lcd_config h2_lcd_config __initdata = { | |||
391 | .ctrl_name = "internal", | 386 | .ctrl_name = "internal", |
392 | }; | 387 | }; |
393 | 388 | ||
394 | static struct omap_board_config_kernel h2_config[] __initdata = { | ||
395 | { OMAP_TAG_LCD, &h2_lcd_config }, | ||
396 | }; | ||
397 | |||
398 | static void __init h2_init(void) | 389 | static void __init h2_init(void) |
399 | { | 390 | { |
400 | h2_init_smc91x(); | 391 | h2_init_smc91x(); |
@@ -438,13 +429,13 @@ static void __init h2_init(void) | |||
438 | omap_cfg_reg(N19_1610_KBR5); | 429 | omap_cfg_reg(N19_1610_KBR5); |
439 | 430 | ||
440 | platform_add_devices(h2_devices, ARRAY_SIZE(h2_devices)); | 431 | platform_add_devices(h2_devices, ARRAY_SIZE(h2_devices)); |
441 | omap_board_config = h2_config; | ||
442 | omap_board_config_size = ARRAY_SIZE(h2_config); | ||
443 | omap_serial_init(); | 432 | omap_serial_init(); |
444 | omap_register_i2c_bus(1, 100, h2_i2c_board_info, | 433 | omap_register_i2c_bus(1, 100, h2_i2c_board_info, |
445 | ARRAY_SIZE(h2_i2c_board_info)); | 434 | ARRAY_SIZE(h2_i2c_board_info)); |
446 | omap1_usb_init(&h2_usb_config); | 435 | omap1_usb_init(&h2_usb_config); |
447 | h2_mmc_init(); | 436 | h2_mmc_init(); |
437 | |||
438 | omapfb_set_lcd_config(&h2_lcd_config); | ||
448 | } | 439 | } |
449 | 440 | ||
450 | MACHINE_START(OMAP_H2, "TI-H2") | 441 | MACHINE_START(OMAP_H2, "TI-H2") |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 4a7f25149703..7cfd25b90735 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/spi/spi.h> | 30 | #include <linux/spi/spi.h> |
31 | #include <linux/i2c/tps65010.h> | 31 | #include <linux/i2c/tps65010.h> |
32 | #include <linux/smc91x.h> | 32 | #include <linux/smc91x.h> |
33 | #include <linux/omapfb.h> | ||
33 | 34 | ||
34 | #include <asm/setup.h> | 35 | #include <asm/setup.h> |
35 | #include <asm/page.h> | 36 | #include <asm/page.h> |
@@ -370,10 +371,6 @@ static struct omap_lcd_config h3_lcd_config __initdata = { | |||
370 | .ctrl_name = "internal", | 371 | .ctrl_name = "internal", |
371 | }; | 372 | }; |
372 | 373 | ||
373 | static struct omap_board_config_kernel h3_config[] __initdata = { | ||
374 | { OMAP_TAG_LCD, &h3_lcd_config }, | ||
375 | }; | ||
376 | |||
377 | static struct i2c_board_info __initdata h3_i2c_board_info[] = { | 374 | static struct i2c_board_info __initdata h3_i2c_board_info[] = { |
378 | { | 375 | { |
379 | I2C_BOARD_INFO("tps65013", 0x48), | 376 | I2C_BOARD_INFO("tps65013", 0x48), |
@@ -426,13 +423,13 @@ static void __init h3_init(void) | |||
426 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 423 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
427 | spi_register_board_info(h3_spi_board_info, | 424 | spi_register_board_info(h3_spi_board_info, |
428 | ARRAY_SIZE(h3_spi_board_info)); | 425 | ARRAY_SIZE(h3_spi_board_info)); |
429 | omap_board_config = h3_config; | ||
430 | omap_board_config_size = ARRAY_SIZE(h3_config); | ||
431 | omap_serial_init(); | 426 | omap_serial_init(); |
432 | omap_register_i2c_bus(1, 100, h3_i2c_board_info, | 427 | omap_register_i2c_bus(1, 100, h3_i2c_board_info, |
433 | ARRAY_SIZE(h3_i2c_board_info)); | 428 | ARRAY_SIZE(h3_i2c_board_info)); |
434 | omap1_usb_init(&h3_usb_config); | 429 | omap1_usb_init(&h3_usb_config); |
435 | h3_mmc_init(); | 430 | h3_mmc_init(); |
431 | |||
432 | omapfb_set_lcd_config(&h3_lcd_config); | ||
436 | } | 433 | } |
437 | 434 | ||
438 | MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") | 435 | MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") |
diff --git a/arch/arm/mach-omap1/board-htcherald.c b/arch/arm/mach-omap1/board-htcherald.c index 731cc3db7ab3..af2afcf24f75 100644 --- a/arch/arm/mach-omap1/board-htcherald.c +++ b/arch/arm/mach-omap1/board-htcherald.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/leds.h> | 36 | #include <linux/leds.h> |
37 | #include <linux/spi/spi.h> | 37 | #include <linux/spi/spi.h> |
38 | #include <linux/spi/ads7846.h> | 38 | #include <linux/spi/ads7846.h> |
39 | #include <linux/omapfb.h> | ||
39 | 40 | ||
40 | #include <asm/mach-types.h> | 41 | #include <asm/mach-types.h> |
41 | #include <asm/mach/arch.h> | 42 | #include <asm/mach/arch.h> |
@@ -398,10 +399,6 @@ static struct omap_lcd_config htcherald_lcd_config __initdata = { | |||
398 | .ctrl_name = "internal", | 399 | .ctrl_name = "internal", |
399 | }; | 400 | }; |
400 | 401 | ||
401 | static struct omap_board_config_kernel htcherald_config[] __initdata = { | ||
402 | { OMAP_TAG_LCD, &htcherald_lcd_config }, | ||
403 | }; | ||
404 | |||
405 | static struct platform_device lcd_device = { | 402 | static struct platform_device lcd_device = { |
406 | .name = "lcd_htcherald", | 403 | .name = "lcd_htcherald", |
407 | .id = -1, | 404 | .id = -1, |
@@ -580,8 +577,6 @@ static void __init htcherald_init(void) | |||
580 | printk(KERN_INFO "HTC Herald init.\n"); | 577 | printk(KERN_INFO "HTC Herald init.\n"); |
581 | 578 | ||
582 | /* Do board initialization before we register all the devices */ | 579 | /* Do board initialization before we register all the devices */ |
583 | omap_board_config = htcherald_config; | ||
584 | omap_board_config_size = ARRAY_SIZE(htcherald_config); | ||
585 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 580 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
586 | 581 | ||
587 | htcherald_disable_watchdog(); | 582 | htcherald_disable_watchdog(); |
@@ -598,6 +593,8 @@ static void __init htcherald_init(void) | |||
598 | htc_mmc_data[0] = &htc_mmc1_data; | 593 | htc_mmc_data[0] = &htc_mmc1_data; |
599 | omap1_init_mmc(htc_mmc_data, 1); | 594 | omap1_init_mmc(htc_mmc_data, 1); |
600 | #endif | 595 | #endif |
596 | |||
597 | omapfb_set_lcd_config(&htcherald_lcd_config); | ||
601 | } | 598 | } |
602 | 599 | ||
603 | MACHINE_START(HERALD, "HTC Herald") | 600 | MACHINE_START(HERALD, "HTC Herald") |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index be2002f42dea..1d5ab6606b9f 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/mtd/physmap.h> | 25 | #include <linux/mtd/physmap.h> |
26 | #include <linux/input.h> | 26 | #include <linux/input.h> |
27 | #include <linux/smc91x.h> | 27 | #include <linux/smc91x.h> |
28 | #include <linux/omapfb.h> | ||
28 | 29 | ||
29 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
30 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
@@ -370,10 +371,6 @@ static inline void innovator_mmc_init(void) | |||
370 | } | 371 | } |
371 | #endif | 372 | #endif |
372 | 373 | ||
373 | static struct omap_board_config_kernel innovator_config[] = { | ||
374 | { OMAP_TAG_LCD, NULL }, | ||
375 | }; | ||
376 | |||
377 | static void __init innovator_init(void) | 374 | static void __init innovator_init(void) |
378 | { | 375 | { |
379 | if (cpu_is_omap1510()) | 376 | if (cpu_is_omap1510()) |
@@ -416,17 +413,15 @@ static void __init innovator_init(void) | |||
416 | #ifdef CONFIG_ARCH_OMAP15XX | 413 | #ifdef CONFIG_ARCH_OMAP15XX |
417 | if (cpu_is_omap1510()) { | 414 | if (cpu_is_omap1510()) { |
418 | omap1_usb_init(&innovator1510_usb_config); | 415 | omap1_usb_init(&innovator1510_usb_config); |
419 | innovator_config[0].data = &innovator1510_lcd_config; | 416 | omapfb_set_lcd_config(&innovator1510_lcd_config); |
420 | } | 417 | } |
421 | #endif | 418 | #endif |
422 | #ifdef CONFIG_ARCH_OMAP16XX | 419 | #ifdef CONFIG_ARCH_OMAP16XX |
423 | if (cpu_is_omap1610()) { | 420 | if (cpu_is_omap1610()) { |
424 | omap1_usb_init(&h2_usb_config); | 421 | omap1_usb_init(&h2_usb_config); |
425 | innovator_config[0].data = &innovator1610_lcd_config; | 422 | omapfb_set_lcd_config(&innovator1610_lcd_config); |
426 | } | 423 | } |
427 | #endif | 424 | #endif |
428 | omap_board_config = innovator_config; | ||
429 | omap_board_config_size = ARRAY_SIZE(innovator_config); | ||
430 | omap_serial_init(); | 425 | omap_serial_init(); |
431 | omap_register_i2c_bus(1, 100, NULL, 0); | 426 | omap_register_i2c_bus(1, 100, NULL, 0); |
432 | innovator_mmc_init(); | 427 | innovator_mmc_init(); |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index f9efc036ba96..9b6332a31fb6 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <plat/board.h> | 31 | #include <plat/board.h> |
32 | #include <plat/keypad.h> | 32 | #include <plat/keypad.h> |
33 | #include "common.h" | 33 | #include "common.h" |
34 | #include <plat/hwa742.h> | ||
35 | #include <plat/lcd_mipid.h> | 34 | #include <plat/lcd_mipid.h> |
36 | #include <plat/mmc.h> | 35 | #include <plat/mmc.h> |
37 | #include <plat/clock.h> | 36 | #include <plat/clock.h> |
@@ -99,15 +98,16 @@ static struct mipid_platform_data nokia770_mipid_platform_data = { | |||
99 | .shutdown = mipid_shutdown, | 98 | .shutdown = mipid_shutdown, |
100 | }; | 99 | }; |
101 | 100 | ||
101 | static struct omap_lcd_config nokia770_lcd_config __initdata = { | ||
102 | .ctrl_name = "hwa742", | ||
103 | }; | ||
104 | |||
102 | static void __init mipid_dev_init(void) | 105 | static void __init mipid_dev_init(void) |
103 | { | 106 | { |
104 | const struct omap_lcd_config *conf; | 107 | nokia770_mipid_platform_data.nreset_gpio = 13; |
108 | nokia770_mipid_platform_data.data_lines = 16; | ||
105 | 109 | ||
106 | conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config); | 110 | omapfb_set_lcd_config(&nokia770_lcd_config); |
107 | if (conf != NULL) { | ||
108 | nokia770_mipid_platform_data.nreset_gpio = conf->nreset_gpio; | ||
109 | nokia770_mipid_platform_data.data_lines = conf->data_lines; | ||
110 | } | ||
111 | } | 111 | } |
112 | 112 | ||
113 | static void __init ads7846_dev_init(void) | 113 | static void __init ads7846_dev_init(void) |
@@ -150,14 +150,9 @@ static struct spi_board_info nokia770_spi_board_info[] __initdata = { | |||
150 | }, | 150 | }, |
151 | }; | 151 | }; |
152 | 152 | ||
153 | static struct hwa742_platform_data nokia770_hwa742_platform_data = { | ||
154 | .te_connected = 1, | ||
155 | }; | ||
156 | |||
157 | static void __init hwa742_dev_init(void) | 153 | static void __init hwa742_dev_init(void) |
158 | { | 154 | { |
159 | clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL); | 155 | clk_add_alias("hwa_sys_ck", NULL, "bclk", NULL); |
160 | omapfb_set_ctrl_platform_data(&nokia770_hwa742_platform_data); | ||
161 | } | 156 | } |
162 | 157 | ||
163 | /* assume no Mini-AB port */ | 158 | /* assume no Mini-AB port */ |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 675de06557aa..ef874655fbd3 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/i2c.h> | 34 | #include <linux/i2c.h> |
35 | #include <linux/leds.h> | 35 | #include <linux/leds.h> |
36 | #include <linux/smc91x.h> | 36 | #include <linux/smc91x.h> |
37 | #include <linux/omapfb.h> | ||
37 | 38 | ||
38 | #include <linux/mtd/mtd.h> | 39 | #include <linux/mtd/mtd.h> |
39 | #include <linux/mtd/partitions.h> | 40 | #include <linux/mtd/partitions.h> |
@@ -300,12 +301,6 @@ static struct omap_lcd_config osk_lcd_config __initdata = { | |||
300 | }; | 301 | }; |
301 | #endif | 302 | #endif |
302 | 303 | ||
303 | static struct omap_board_config_kernel osk_config[] __initdata = { | ||
304 | #ifdef CONFIG_OMAP_OSK_MISTRAL | ||
305 | { OMAP_TAG_LCD, &osk_lcd_config }, | ||
306 | #endif | ||
307 | }; | ||
308 | |||
309 | #ifdef CONFIG_OMAP_OSK_MISTRAL | 304 | #ifdef CONFIG_OMAP_OSK_MISTRAL |
310 | 305 | ||
311 | #include <linux/input.h> | 306 | #include <linux/input.h> |
@@ -549,8 +544,6 @@ static void __init osk_init(void) | |||
549 | osk_flash_resource.end = osk_flash_resource.start = omap_cs3_phys(); | 544 | osk_flash_resource.end = osk_flash_resource.start = omap_cs3_phys(); |
550 | osk_flash_resource.end += SZ_32M - 1; | 545 | osk_flash_resource.end += SZ_32M - 1; |
551 | platform_add_devices(osk5912_devices, ARRAY_SIZE(osk5912_devices)); | 546 | platform_add_devices(osk5912_devices, ARRAY_SIZE(osk5912_devices)); |
552 | omap_board_config = osk_config; | ||
553 | omap_board_config_size = ARRAY_SIZE(osk_config); | ||
554 | 547 | ||
555 | l = omap_readl(USB_TRANSCEIVER_CTRL); | 548 | l = omap_readl(USB_TRANSCEIVER_CTRL); |
556 | l |= (3 << 1); | 549 | l |= (3 << 1); |
@@ -567,6 +560,11 @@ static void __init osk_init(void) | |||
567 | omap_register_i2c_bus(1, 400, osk_i2c_board_info, | 560 | omap_register_i2c_bus(1, 400, osk_i2c_board_info, |
568 | ARRAY_SIZE(osk_i2c_board_info)); | 561 | ARRAY_SIZE(osk_i2c_board_info)); |
569 | osk_mistral_init(); | 562 | osk_mistral_init(); |
563 | |||
564 | #ifdef CONFIG_OMAP_OSK_MISTRAL | ||
565 | omapfb_set_lcd_config(&osk_lcd_config); | ||
566 | #endif | ||
567 | |||
570 | } | 568 | } |
571 | 569 | ||
572 | MACHINE_START(OMAP_OSK, "TI-OSK") | 570 | MACHINE_START(OMAP_OSK, "TI-OSK") |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 81fa27f88369..612342cb2a2d 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/spi/spi.h> | 27 | #include <linux/spi/spi.h> |
28 | #include <linux/interrupt.h> | 28 | #include <linux/interrupt.h> |
29 | #include <linux/apm-emulation.h> | 29 | #include <linux/apm-emulation.h> |
30 | #include <linux/omapfb.h> | ||
30 | 31 | ||
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
@@ -209,10 +210,6 @@ static struct omap_lcd_config palmte_lcd_config __initdata = { | |||
209 | .ctrl_name = "internal", | 210 | .ctrl_name = "internal", |
210 | }; | 211 | }; |
211 | 212 | ||
212 | static struct omap_board_config_kernel palmte_config[] __initdata = { | ||
213 | { OMAP_TAG_LCD, &palmte_lcd_config }, | ||
214 | }; | ||
215 | |||
216 | static struct spi_board_info palmte_spi_info[] __initdata = { | 213 | static struct spi_board_info palmte_spi_info[] __initdata = { |
217 | { | 214 | { |
218 | .modalias = "tsc2102", | 215 | .modalias = "tsc2102", |
@@ -250,9 +247,6 @@ static void __init omap_palmte_init(void) | |||
250 | omap_cfg_reg(UART3_TX); | 247 | omap_cfg_reg(UART3_TX); |
251 | omap_cfg_reg(UART3_RX); | 248 | omap_cfg_reg(UART3_RX); |
252 | 249 | ||
253 | omap_board_config = palmte_config; | ||
254 | omap_board_config_size = ARRAY_SIZE(palmte_config); | ||
255 | |||
256 | platform_add_devices(palmte_devices, ARRAY_SIZE(palmte_devices)); | 250 | platform_add_devices(palmte_devices, ARRAY_SIZE(palmte_devices)); |
257 | 251 | ||
258 | spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); | 252 | spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); |
@@ -260,6 +254,8 @@ static void __init omap_palmte_init(void) | |||
260 | omap_serial_init(); | 254 | omap_serial_init(); |
261 | omap1_usb_init(&palmte_usb_config); | 255 | omap1_usb_init(&palmte_usb_config); |
262 | omap_register_i2c_bus(1, 100, NULL, 0); | 256 | omap_register_i2c_bus(1, 100, NULL, 0); |
257 | |||
258 | omapfb_set_lcd_config(&palmte_lcd_config); | ||
263 | } | 259 | } |
264 | 260 | ||
265 | MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") | 261 | MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") |
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 81cb82178388..b63350bc88fd 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/mtd/partitions.h> | 24 | #include <linux/mtd/partitions.h> |
25 | #include <linux/mtd/physmap.h> | 25 | #include <linux/mtd/physmap.h> |
26 | #include <linux/leds.h> | 26 | #include <linux/leds.h> |
27 | #include <linux/omapfb.h> | ||
27 | 28 | ||
28 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
29 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
@@ -273,10 +274,6 @@ static struct omap_lcd_config palmtt_lcd_config __initdata = { | |||
273 | .ctrl_name = "internal", | 274 | .ctrl_name = "internal", |
274 | }; | 275 | }; |
275 | 276 | ||
276 | static struct omap_board_config_kernel palmtt_config[] __initdata = { | ||
277 | { OMAP_TAG_LCD, &palmtt_lcd_config }, | ||
278 | }; | ||
279 | |||
280 | static void __init omap_mpu_wdt_mode(int mode) { | 277 | static void __init omap_mpu_wdt_mode(int mode) { |
281 | if (mode) | 278 | if (mode) |
282 | omap_writew(0x8000, OMAP_WDT_TIMER_MODE); | 279 | omap_writew(0x8000, OMAP_WDT_TIMER_MODE); |
@@ -298,15 +295,14 @@ static void __init omap_palmtt_init(void) | |||
298 | 295 | ||
299 | omap_mpu_wdt_mode(0); | 296 | omap_mpu_wdt_mode(0); |
300 | 297 | ||
301 | omap_board_config = palmtt_config; | ||
302 | omap_board_config_size = ARRAY_SIZE(palmtt_config); | ||
303 | |||
304 | platform_add_devices(palmtt_devices, ARRAY_SIZE(palmtt_devices)); | 298 | platform_add_devices(palmtt_devices, ARRAY_SIZE(palmtt_devices)); |
305 | 299 | ||
306 | spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo)); | 300 | spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo)); |
307 | omap_serial_init(); | 301 | omap_serial_init(); |
308 | omap1_usb_init(&palmtt_usb_config); | 302 | omap1_usb_init(&palmtt_usb_config); |
309 | omap_register_i2c_bus(1, 100, NULL, 0); | 303 | omap_register_i2c_bus(1, 100, NULL, 0); |
304 | |||
305 | omapfb_set_lcd_config(&palmtt_lcd_config); | ||
310 | } | 306 | } |
311 | 307 | ||
312 | MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T") | 308 | MACHINE_START(OMAP_PALMTT, "OMAP1510 based Palm Tungsten|T") |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index e881945ce8ec..9924c70af09f 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/mtd/mtd.h> | 27 | #include <linux/mtd/mtd.h> |
28 | #include <linux/mtd/partitions.h> | 28 | #include <linux/mtd/partitions.h> |
29 | #include <linux/mtd/physmap.h> | 29 | #include <linux/mtd/physmap.h> |
30 | #include <linux/omapfb.h> | ||
30 | 31 | ||
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
@@ -239,10 +240,6 @@ static struct omap_lcd_config palmz71_lcd_config __initdata = { | |||
239 | .ctrl_name = "internal", | 240 | .ctrl_name = "internal", |
240 | }; | 241 | }; |
241 | 242 | ||
242 | static struct omap_board_config_kernel palmz71_config[] __initdata = { | ||
243 | {OMAP_TAG_LCD, &palmz71_lcd_config}, | ||
244 | }; | ||
245 | |||
246 | static irqreturn_t | 243 | static irqreturn_t |
247 | palmz71_powercable(int irq, void *dev_id) | 244 | palmz71_powercable(int irq, void *dev_id) |
248 | { | 245 | { |
@@ -313,9 +310,6 @@ omap_palmz71_init(void) | |||
313 | palmz71_gpio_setup(1); | 310 | palmz71_gpio_setup(1); |
314 | omap_mpu_wdt_mode(0); | 311 | omap_mpu_wdt_mode(0); |
315 | 312 | ||
316 | omap_board_config = palmz71_config; | ||
317 | omap_board_config_size = ARRAY_SIZE(palmz71_config); | ||
318 | |||
319 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 313 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
320 | 314 | ||
321 | spi_register_board_info(palmz71_boardinfo, | 315 | spi_register_board_info(palmz71_boardinfo, |
@@ -324,6 +318,8 @@ omap_palmz71_init(void) | |||
324 | omap_serial_init(); | 318 | omap_serial_init(); |
325 | omap_register_i2c_bus(1, 100, NULL, 0); | 319 | omap_register_i2c_bus(1, 100, NULL, 0); |
326 | palmz71_gpio_setup(0); | 320 | palmz71_gpio_setup(0); |
321 | |||
322 | omapfb_set_lcd_config(&palmz71_lcd_config); | ||
327 | } | 323 | } |
328 | 324 | ||
329 | MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71") | 325 | MACHINE_START(OMAP_PALMZ71, "OMAP310 based Palm Zire71") |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index c000bed76276..8e0153447c6d 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/mtd/physmap.h> | 21 | #include <linux/mtd/physmap.h> |
22 | #include <linux/input.h> | 22 | #include <linux/input.h> |
23 | #include <linux/smc91x.h> | 23 | #include <linux/smc91x.h> |
24 | #include <linux/omapfb.h> | ||
24 | 25 | ||
25 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
26 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
@@ -232,27 +233,17 @@ static struct platform_device kp_device = { | |||
232 | .resource = kp_resources, | 233 | .resource = kp_resources, |
233 | }; | 234 | }; |
234 | 235 | ||
235 | static struct platform_device lcd_device = { | ||
236 | .name = "lcd_p2", | ||
237 | .id = -1, | ||
238 | }; | ||
239 | |||
240 | static struct platform_device *devices[] __initdata = { | 236 | static struct platform_device *devices[] __initdata = { |
241 | &nor_device, | 237 | &nor_device, |
242 | &nand_device, | 238 | &nand_device, |
243 | &smc91x_device, | 239 | &smc91x_device, |
244 | &kp_device, | 240 | &kp_device, |
245 | &lcd_device, | ||
246 | }; | 241 | }; |
247 | 242 | ||
248 | static struct omap_lcd_config perseus2_lcd_config __initdata = { | 243 | static struct omap_lcd_config perseus2_lcd_config __initdata = { |
249 | .ctrl_name = "internal", | 244 | .ctrl_name = "internal", |
250 | }; | 245 | }; |
251 | 246 | ||
252 | static struct omap_board_config_kernel perseus2_config[] __initdata = { | ||
253 | { OMAP_TAG_LCD, &perseus2_lcd_config }, | ||
254 | }; | ||
255 | |||
256 | static void __init perseus2_init_smc91x(void) | 247 | static void __init perseus2_init_smc91x(void) |
257 | { | 248 | { |
258 | fpga_write(1, H2P2_DBG_FPGA_LAN_RESET); | 249 | fpga_write(1, H2P2_DBG_FPGA_LAN_RESET); |
@@ -320,10 +311,10 @@ static void __init omap_perseus2_init(void) | |||
320 | 311 | ||
321 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 312 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
322 | 313 | ||
323 | omap_board_config = perseus2_config; | ||
324 | omap_board_config_size = ARRAY_SIZE(perseus2_config); | ||
325 | omap_serial_init(); | 314 | omap_serial_init(); |
326 | omap_register_i2c_bus(1, 100, NULL, 0); | 315 | omap_register_i2c_bus(1, 100, NULL, 0); |
316 | |||
317 | omapfb_set_lcd_config(&perseus2_lcd_config); | ||
327 | } | 318 | } |
328 | 319 | ||
329 | /* Only FPGA needs to be mapped here. All others are done with ioremap */ | 320 | /* Only FPGA needs to be mapped here. All others are done with ioremap */ |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index 7bcd82ab0fd0..0c76e12337d9 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/i2c.h> | 27 | #include <linux/i2c.h> |
28 | #include <linux/errno.h> | 28 | #include <linux/errno.h> |
29 | #include <linux/export.h> | 29 | #include <linux/export.h> |
30 | #include <linux/omapfb.h> | ||
30 | 31 | ||
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
32 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
@@ -355,11 +356,6 @@ static struct omap_usb_config sx1_usb_config __initdata = { | |||
355 | 356 | ||
356 | /*----------- LCD -------------------------*/ | 357 | /*----------- LCD -------------------------*/ |
357 | 358 | ||
358 | static struct platform_device sx1_lcd_device = { | ||
359 | .name = "lcd_sx1", | ||
360 | .id = -1, | ||
361 | }; | ||
362 | |||
363 | static struct omap_lcd_config sx1_lcd_config __initdata = { | 359 | static struct omap_lcd_config sx1_lcd_config __initdata = { |
364 | .ctrl_name = "internal", | 360 | .ctrl_name = "internal", |
365 | }; | 361 | }; |
@@ -368,14 +364,8 @@ static struct omap_lcd_config sx1_lcd_config __initdata = { | |||
368 | static struct platform_device *sx1_devices[] __initdata = { | 364 | static struct platform_device *sx1_devices[] __initdata = { |
369 | &sx1_flash_device, | 365 | &sx1_flash_device, |
370 | &sx1_kp_device, | 366 | &sx1_kp_device, |
371 | &sx1_lcd_device, | ||
372 | &sx1_irda_device, | 367 | &sx1_irda_device, |
373 | }; | 368 | }; |
374 | /*-----------------------------------------*/ | ||
375 | |||
376 | static struct omap_board_config_kernel sx1_config[] __initdata = { | ||
377 | { OMAP_TAG_LCD, &sx1_lcd_config }, | ||
378 | }; | ||
379 | 369 | ||
380 | /*-----------------------------------------*/ | 370 | /*-----------------------------------------*/ |
381 | 371 | ||
@@ -391,8 +381,6 @@ static void __init omap_sx1_init(void) | |||
391 | 381 | ||
392 | platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); | 382 | platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); |
393 | 383 | ||
394 | omap_board_config = sx1_config; | ||
395 | omap_board_config_size = ARRAY_SIZE(sx1_config); | ||
396 | omap_serial_init(); | 384 | omap_serial_init(); |
397 | omap_register_i2c_bus(1, 100, NULL, 0); | 385 | omap_register_i2c_bus(1, 100, NULL, 0); |
398 | omap1_usb_init(&sx1_usb_config); | 386 | omap1_usb_init(&sx1_usb_config); |
@@ -406,6 +394,8 @@ static void __init omap_sx1_init(void) | |||
406 | gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */ | 394 | gpio_direction_output(1, 1); /*A_IRDA_OFF = 1 */ |
407 | gpio_direction_output(11, 0); /*A_SWITCH = 0 */ | 395 | gpio_direction_output(11, 0); /*A_SWITCH = 0 */ |
408 | gpio_direction_output(15, 0); /*A_USB_ON = 0 */ | 396 | gpio_direction_output(15, 0); /*A_USB_ON = 0 */ |
397 | |||
398 | omapfb_set_lcd_config(&sx1_lcd_config); | ||
409 | } | 399 | } |
410 | 400 | ||
411 | MACHINE_START(SX1, "OMAP310 based Siemens SX1") | 401 | MACHINE_START(SX1, "OMAP310 based Siemens SX1") |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index fb11b44fbdec..e501b4972a64 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <linux/omapfb.h> | ||
25 | 24 | ||
26 | #include <asm/tlb.h> | 25 | #include <asm/tlb.h> |
27 | 26 | ||
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 4de7d1e79e73..f1e46ea6b81d 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/dma-mapping.h> | 17 | #include <linux/dma-mapping.h> |
18 | #include <linux/omapfb.h> | ||
19 | 18 | ||
20 | #include <plat/common.h> | 19 | #include <plat/common.h> |
21 | #include <plat/board.h> | 20 | #include <plat/board.h> |
@@ -65,7 +64,6 @@ const void *__init omap_get_var_config(u16 tag, size_t *len) | |||
65 | 64 | ||
66 | void __init omap_reserve(void) | 65 | void __init omap_reserve(void) |
67 | { | 66 | { |
68 | omapfb_reserve_sdram_memblock(); | ||
69 | omap_vram_reserve_sdram_memblock(); | 67 | omap_vram_reserve_sdram_memblock(); |
70 | omap_dsp_reserve_sdram_memblock(); | 68 | omap_dsp_reserve_sdram_memblock(); |
71 | omap_secure_ram_reserve_memblock(); | 69 | omap_secure_ram_reserve_memblock(); |
diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c index c9e5d7298c40..dd6f92c99e56 100644 --- a/arch/arm/plat-omap/fb.c +++ b/arch/arm/plat-omap/fb.c | |||
@@ -34,15 +34,11 @@ | |||
34 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
35 | 35 | ||
36 | #include <plat/board.h> | 36 | #include <plat/board.h> |
37 | #include <plat/sram.h> | ||
38 | |||
39 | #include "fb.h" | ||
40 | 37 | ||
41 | #if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) | 38 | #if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE) |
42 | 39 | ||
40 | static bool omapfb_lcd_configured; | ||
43 | static struct omapfb_platform_data omapfb_config; | 41 | static struct omapfb_platform_data omapfb_config; |
44 | static int config_invalid; | ||
45 | static int configured_regions; | ||
46 | 42 | ||
47 | static u64 omap_fb_dma_mask = ~(u32)0; | 43 | static u64 omap_fb_dma_mask = ~(u32)0; |
48 | 44 | ||
@@ -57,302 +53,21 @@ static struct platform_device omap_fb_device = { | |||
57 | .num_resources = 0, | 53 | .num_resources = 0, |
58 | }; | 54 | }; |
59 | 55 | ||
60 | void omapfb_set_platform_data(struct omapfb_platform_data *data) | 56 | void __init omapfb_set_lcd_config(const struct omap_lcd_config *config) |
61 | { | ||
62 | } | ||
63 | |||
64 | static inline int ranges_overlap(unsigned long start1, unsigned long size1, | ||
65 | unsigned long start2, unsigned long size2) | ||
66 | { | ||
67 | return (start1 >= start2 && start1 < start2 + size2) || | ||
68 | (start2 >= start1 && start2 < start1 + size1); | ||
69 | } | ||
70 | |||
71 | static inline int range_included(unsigned long start1, unsigned long size1, | ||
72 | unsigned long start2, unsigned long size2) | ||
73 | { | ||
74 | return start1 >= start2 && start1 + size1 <= start2 + size2; | ||
75 | } | ||
76 | |||
77 | |||
78 | /* Check if there is an overlapping region. */ | ||
79 | static int fbmem_region_reserved(unsigned long start, size_t size) | ||
80 | { | ||
81 | struct omapfb_mem_region *rg; | ||
82 | int i; | ||
83 | |||
84 | rg = &omapfb_config.mem_desc.region[0]; | ||
85 | for (i = 0; i < OMAPFB_PLANE_NUM; i++, rg++) { | ||
86 | if (!rg->paddr) | ||
87 | /* Empty slot. */ | ||
88 | continue; | ||
89 | if (ranges_overlap(start, size, rg->paddr, rg->size)) | ||
90 | return 1; | ||
91 | } | ||
92 | return 0; | ||
93 | } | ||
94 | |||
95 | /* | ||
96 | * Get the region_idx`th region from board config/ATAG and convert it to | ||
97 | * our internal format. | ||
98 | */ | ||
99 | static int __init get_fbmem_region(int region_idx, struct omapfb_mem_region *rg) | ||
100 | { | 57 | { |
101 | const struct omap_fbmem_config *conf; | 58 | omapfb_config.lcd = *config; |
102 | u32 paddr; | 59 | omapfb_lcd_configured = true; |
103 | |||
104 | conf = omap_get_nr_config(OMAP_TAG_FBMEM, | ||
105 | struct omap_fbmem_config, region_idx); | ||
106 | if (conf == NULL) | ||
107 | return -ENOENT; | ||
108 | |||
109 | paddr = conf->start; | ||
110 | /* | ||
111 | * Low bits encode the page allocation mode, if high bits | ||
112 | * are zero. Otherwise we need a page aligned fixed | ||
113 | * address. | ||
114 | */ | ||
115 | memset(rg, 0, sizeof(*rg)); | ||
116 | rg->type = paddr & ~PAGE_MASK; | ||
117 | rg->paddr = paddr & PAGE_MASK; | ||
118 | rg->size = PAGE_ALIGN(conf->size); | ||
119 | return 0; | ||
120 | } | 60 | } |
121 | 61 | ||
122 | static int set_fbmem_region_type(struct omapfb_mem_region *rg, int mem_type, | 62 | static int __init omap_init_fb(void) |
123 | unsigned long mem_start, | ||
124 | unsigned long mem_size) | ||
125 | { | ||
126 | /* | ||
127 | * Check if the configuration specifies the type explicitly. | ||
128 | * type = 0 && paddr = 0, a default don't care case maps to | ||
129 | * the SDRAM type. | ||
130 | */ | ||
131 | if (rg->type || !rg->paddr) | ||
132 | return 0; | ||
133 | if (ranges_overlap(rg->paddr, rg->size, mem_start, mem_size)) { | ||
134 | rg->type = mem_type; | ||
135 | return 0; | ||
136 | } | ||
137 | /* Can't determine it. */ | ||
138 | return -1; | ||
139 | } | ||
140 | |||
141 | static int check_fbmem_region(int region_idx, struct omapfb_mem_region *rg, | ||
142 | unsigned long start_avail, unsigned size_avail) | ||
143 | { | 63 | { |
144 | unsigned long paddr = rg->paddr; | ||
145 | size_t size = rg->size; | ||
146 | |||
147 | if (rg->type > OMAPFB_MEMTYPE_MAX) { | ||
148 | printk(KERN_ERR | ||
149 | "Invalid start address for FB region %d\n", region_idx); | ||
150 | return -EINVAL; | ||
151 | } | ||
152 | |||
153 | if (!rg->size) { | ||
154 | printk(KERN_ERR "Zero size for FB region %d\n", region_idx); | ||
155 | return -EINVAL; | ||
156 | } | ||
157 | |||
158 | if (!paddr) | ||
159 | /* Allocate this dynamically, leave paddr 0 for now. */ | ||
160 | return 0; | ||
161 | |||
162 | /* | 64 | /* |
163 | * Fixed region for the given RAM range. Check if it's already | 65 | * If the board file has not set the lcd config with |
164 | * reserved by the FB code or someone else. | 66 | * omapfb_set_lcd_config(), don't bother registering the omapfb device |
165 | */ | 67 | */ |
166 | if (fbmem_region_reserved(paddr, size) || | 68 | if (!omapfb_lcd_configured) |
167 | !range_included(paddr, size, start_avail, size_avail)) { | ||
168 | printk(KERN_ERR "Trying to use reserved memory " | ||
169 | "for FB region %d\n", region_idx); | ||
170 | return -EINVAL; | ||
171 | } | ||
172 | |||
173 | return 0; | ||
174 | } | ||
175 | |||
176 | static int valid_sdram(unsigned long addr, unsigned long size) | ||
177 | { | ||
178 | return memblock_is_region_memory(addr, size); | ||
179 | } | ||
180 | |||
181 | static int reserve_sdram(unsigned long addr, unsigned long size) | ||
182 | { | ||
183 | if (memblock_is_region_reserved(addr, size)) | ||
184 | return -EBUSY; | ||
185 | if (memblock_reserve(addr, size)) | ||
186 | return -ENOMEM; | ||
187 | return 0; | ||
188 | } | ||
189 | |||
190 | /* | ||
191 | * Called from map_io. We need to call to this early enough so that we | ||
192 | * can reserve the fixed SDRAM regions before VM could get hold of them. | ||
193 | */ | ||
194 | void __init omapfb_reserve_sdram_memblock(void) | ||
195 | { | ||
196 | unsigned long reserved = 0; | ||
197 | int i; | ||
198 | |||
199 | if (config_invalid) | ||
200 | return; | ||
201 | |||
202 | for (i = 0; ; i++) { | ||
203 | struct omapfb_mem_region rg; | ||
204 | |||
205 | if (get_fbmem_region(i, &rg) < 0) | ||
206 | break; | ||
207 | |||
208 | if (i == OMAPFB_PLANE_NUM) { | ||
209 | pr_err("Extraneous FB mem configuration entries\n"); | ||
210 | config_invalid = 1; | ||
211 | return; | ||
212 | } | ||
213 | |||
214 | /* Check if it's our memory type. */ | ||
215 | if (rg.type != OMAPFB_MEMTYPE_SDRAM) | ||
216 | continue; | ||
217 | |||
218 | /* Check if the region falls within SDRAM */ | ||
219 | if (rg.paddr && !valid_sdram(rg.paddr, rg.size)) | ||
220 | continue; | ||
221 | |||
222 | if (rg.size == 0) { | ||
223 | pr_err("Zero size for FB region %d\n", i); | ||
224 | config_invalid = 1; | ||
225 | return; | ||
226 | } | ||
227 | |||
228 | if (rg.paddr) { | ||
229 | if (reserve_sdram(rg.paddr, rg.size)) { | ||
230 | pr_err("Trying to use reserved memory for FB region %d\n", | ||
231 | i); | ||
232 | config_invalid = 1; | ||
233 | return; | ||
234 | } | ||
235 | reserved += rg.size; | ||
236 | } | ||
237 | |||
238 | if (omapfb_config.mem_desc.region[i].size) { | ||
239 | pr_err("FB region %d already set\n", i); | ||
240 | config_invalid = 1; | ||
241 | return; | ||
242 | } | ||
243 | |||
244 | omapfb_config.mem_desc.region[i] = rg; | ||
245 | configured_regions++; | ||
246 | } | ||
247 | omapfb_config.mem_desc.region_cnt = i; | ||
248 | if (reserved) | ||
249 | pr_info("Reserving %lu bytes SDRAM for frame buffer\n", | ||
250 | reserved); | ||
251 | } | ||
252 | |||
253 | /* | ||
254 | * Called at sram init time, before anything is pushed to the SRAM stack. | ||
255 | * Because of the stack scheme, we will allocate everything from the | ||
256 | * start of the lowest address region to the end of SRAM. This will also | ||
257 | * include padding for page alignment and possible holes between regions. | ||
258 | * | ||
259 | * As opposed to the SDRAM case, we'll also do any dynamic allocations at | ||
260 | * this point, since the driver built as a module would have problem with | ||
261 | * freeing / reallocating the regions. | ||
262 | */ | ||
263 | unsigned long __init omapfb_reserve_sram(unsigned long sram_pstart, | ||
264 | unsigned long sram_vstart, | ||
265 | unsigned long sram_size, | ||
266 | unsigned long pstart_avail, | ||
267 | unsigned long size_avail) | ||
268 | { | ||
269 | struct omapfb_mem_region rg; | ||
270 | unsigned long pend_avail; | ||
271 | unsigned long reserved; | ||
272 | int i; | ||
273 | |||
274 | if (config_invalid) | ||
275 | return 0; | 69 | return 0; |
276 | 70 | ||
277 | reserved = 0; | ||
278 | pend_avail = pstart_avail + size_avail; | ||
279 | for (i = 0; ; i++) { | ||
280 | if (get_fbmem_region(i, &rg) < 0) | ||
281 | break; | ||
282 | if (i == OMAPFB_PLANE_NUM) { | ||
283 | printk(KERN_ERR | ||
284 | "Extraneous FB mem configuration entries\n"); | ||
285 | config_invalid = 1; | ||
286 | return 0; | ||
287 | } | ||
288 | |||
289 | /* Check if it's our memory type. */ | ||
290 | if (set_fbmem_region_type(&rg, OMAPFB_MEMTYPE_SRAM, | ||
291 | sram_pstart, sram_size) < 0 || | ||
292 | (rg.type != OMAPFB_MEMTYPE_SRAM)) | ||
293 | continue; | ||
294 | BUG_ON(omapfb_config.mem_desc.region[i].size); | ||
295 | |||
296 | if (check_fbmem_region(i, &rg, pstart_avail, size_avail) < 0) { | ||
297 | config_invalid = 1; | ||
298 | return 0; | ||
299 | } | ||
300 | |||
301 | if (!rg.paddr) { | ||
302 | /* Dynamic allocation */ | ||
303 | if ((size_avail & PAGE_MASK) < rg.size) { | ||
304 | printk("Not enough SRAM for FB region %d\n", | ||
305 | i); | ||
306 | config_invalid = 1; | ||
307 | return 0; | ||
308 | } | ||
309 | size_avail = (size_avail - rg.size) & PAGE_MASK; | ||
310 | rg.paddr = pstart_avail + size_avail; | ||
311 | } | ||
312 | /* Reserve everything above the start of the region. */ | ||
313 | if (pend_avail - rg.paddr > reserved) | ||
314 | reserved = pend_avail - rg.paddr; | ||
315 | size_avail = pend_avail - reserved - pstart_avail; | ||
316 | |||
317 | /* | ||
318 | * We have a kernel mapping for this already, so the | ||
319 | * driver won't have to make one. | ||
320 | */ | ||
321 | rg.vaddr = (void *)(sram_vstart + rg.paddr - sram_pstart); | ||
322 | omapfb_config.mem_desc.region[i] = rg; | ||
323 | configured_regions++; | ||
324 | } | ||
325 | omapfb_config.mem_desc.region_cnt = i; | ||
326 | if (reserved) | ||
327 | pr_info("Reserving %lu bytes SRAM for frame buffer\n", | ||
328 | reserved); | ||
329 | return reserved; | ||
330 | } | ||
331 | |||
332 | void omapfb_set_ctrl_platform_data(void *data) | ||
333 | { | ||
334 | omapfb_config.ctrl_platform_data = data; | ||
335 | } | ||
336 | |||
337 | static int __init omap_init_fb(void) | ||
338 | { | ||
339 | const struct omap_lcd_config *conf; | ||
340 | |||
341 | if (config_invalid) | ||
342 | return 0; | ||
343 | if (configured_regions != omapfb_config.mem_desc.region_cnt) { | ||
344 | printk(KERN_ERR "Invalid FB mem configuration entries\n"); | ||
345 | return 0; | ||
346 | } | ||
347 | conf = omap_get_config(OMAP_TAG_LCD, struct omap_lcd_config); | ||
348 | if (conf == NULL) { | ||
349 | if (configured_regions) | ||
350 | /* FB mem config, but no LCD config? */ | ||
351 | printk(KERN_ERR "Missing LCD configuration\n"); | ||
352 | return 0; | ||
353 | } | ||
354 | omapfb_config.lcd = *conf; | ||
355 | |||
356 | return platform_device_register(&omap_fb_device); | 71 | return platform_device_register(&omap_fb_device); |
357 | } | 72 | } |
358 | 73 | ||
@@ -374,11 +89,6 @@ static struct platform_device omap_fb_device = { | |||
374 | .num_resources = 0, | 89 | .num_resources = 0, |
375 | }; | 90 | }; |
376 | 91 | ||
377 | void omapfb_set_platform_data(struct omapfb_platform_data *data) | ||
378 | { | ||
379 | omapfb_config = *data; | ||
380 | } | ||
381 | |||
382 | static int __init omap_init_fb(void) | 92 | static int __init omap_init_fb(void) |
383 | { | 93 | { |
384 | return platform_device_register(&omap_fb_device); | 94 | return platform_device_register(&omap_fb_device); |
@@ -386,36 +96,10 @@ static int __init omap_init_fb(void) | |||
386 | 96 | ||
387 | arch_initcall(omap_init_fb); | 97 | arch_initcall(omap_init_fb); |
388 | 98 | ||
389 | void omapfb_reserve_sdram_memblock(void) | ||
390 | { | ||
391 | } | ||
392 | |||
393 | unsigned long __init omapfb_reserve_sram(unsigned long sram_pstart, | ||
394 | unsigned long sram_vstart, | ||
395 | unsigned long sram_size, | ||
396 | unsigned long start_avail, | ||
397 | unsigned long size_avail) | ||
398 | { | ||
399 | return 0; | ||
400 | } | ||
401 | |||
402 | #else | 99 | #else |
403 | 100 | ||
404 | void omapfb_set_platform_data(struct omapfb_platform_data *data) | 101 | void __init omapfb_set_lcd_config(const struct omap_lcd_config *config) |
405 | { | ||
406 | } | ||
407 | |||
408 | void omapfb_reserve_sdram_memblock(void) | ||
409 | { | ||
410 | } | ||
411 | |||
412 | unsigned long __init omapfb_reserve_sram(unsigned long sram_pstart, | ||
413 | unsigned long sram_vstart, | ||
414 | unsigned long sram_size, | ||
415 | unsigned long start_avail, | ||
416 | unsigned long size_avail) | ||
417 | { | 102 | { |
418 | return 0; | ||
419 | } | 103 | } |
420 | 104 | ||
421 | #endif | 105 | #endif |
diff --git a/arch/arm/plat-omap/fb.h b/arch/arm/plat-omap/fb.h deleted file mode 100644 index d765d0bd8520..000000000000 --- a/arch/arm/plat-omap/fb.h +++ /dev/null | |||
@@ -1,10 +0,0 @@ | |||
1 | #ifndef __PLAT_OMAP_FB_H__ | ||
2 | #define __PLAT_OMAP_FB_H__ | ||
3 | |||
4 | extern unsigned long omapfb_reserve_sram(unsigned long sram_pstart, | ||
5 | unsigned long sram_vstart, | ||
6 | unsigned long sram_size, | ||
7 | unsigned long pstart_avail, | ||
8 | unsigned long size_avail); | ||
9 | |||
10 | #endif /* __PLAT_OMAP_FB_H__ */ | ||
diff --git a/arch/arm/plat-omap/include/plat/blizzard.h b/arch/arm/plat-omap/include/plat/blizzard.h deleted file mode 100644 index 56e7f2e7d12f..000000000000 --- a/arch/arm/plat-omap/include/plat/blizzard.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | #ifndef _BLIZZARD_H | ||
2 | #define _BLIZZARD_H | ||
3 | |||
4 | struct blizzard_platform_data { | ||
5 | void (*power_up)(struct device *dev); | ||
6 | void (*power_down)(struct device *dev); | ||
7 | unsigned long (*get_clock_rate)(struct device *dev); | ||
8 | |||
9 | unsigned te_connected:1; | ||
10 | }; | ||
11 | |||
12 | #endif | ||
diff --git a/arch/arm/plat-omap/include/plat/board.h b/arch/arm/plat-omap/include/plat/board.h index 97126dfd2888..d5eb4c87db9d 100644 --- a/arch/arm/plat-omap/include/plat/board.h +++ b/arch/arm/plat-omap/include/plat/board.h | |||
@@ -28,9 +28,7 @@ enum { | |||
28 | 28 | ||
29 | /* Different peripheral ids */ | 29 | /* Different peripheral ids */ |
30 | #define OMAP_TAG_CLOCK 0x4f01 | 30 | #define OMAP_TAG_CLOCK 0x4f01 |
31 | #define OMAP_TAG_LCD 0x4f05 | ||
32 | #define OMAP_TAG_GPIO_SWITCH 0x4f06 | 31 | #define OMAP_TAG_GPIO_SWITCH 0x4f06 |
33 | #define OMAP_TAG_FBMEM 0x4f08 | ||
34 | #define OMAP_TAG_STI_CONSOLE 0x4f09 | 32 | #define OMAP_TAG_STI_CONSOLE 0x4f09 |
35 | #define OMAP_TAG_CAMERA_SENSOR 0x4f0a | 33 | #define OMAP_TAG_CAMERA_SENSOR 0x4f0a |
36 | 34 | ||
diff --git a/arch/arm/plat-omap/include/plat/hwa742.h b/arch/arm/plat-omap/include/plat/hwa742.h deleted file mode 100644 index 886248d32b49..000000000000 --- a/arch/arm/plat-omap/include/plat/hwa742.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | #ifndef _HWA742_H | ||
2 | #define _HWA742_H | ||
3 | |||
4 | struct hwa742_platform_data { | ||
5 | unsigned te_connected:1; | ||
6 | }; | ||
7 | |||
8 | #endif | ||
diff --git a/arch/arm/plat-omap/include/plat/vram.h b/arch/arm/plat-omap/include/plat/vram.h index 0aa4ecd12c7d..4d65b7d06e6c 100644 --- a/arch/arm/plat-omap/include/plat/vram.h +++ b/arch/arm/plat-omap/include/plat/vram.h | |||
@@ -23,40 +23,21 @@ | |||
23 | 23 | ||
24 | #include <linux/types.h> | 24 | #include <linux/types.h> |
25 | 25 | ||
26 | #define OMAP_VRAM_MEMTYPE_SDRAM 0 | ||
27 | #define OMAP_VRAM_MEMTYPE_SRAM 1 | ||
28 | #define OMAP_VRAM_MEMTYPE_MAX 1 | ||
29 | |||
30 | extern int omap_vram_add_region(unsigned long paddr, size_t size); | 26 | extern int omap_vram_add_region(unsigned long paddr, size_t size); |
31 | extern int omap_vram_free(unsigned long paddr, size_t size); | 27 | extern int omap_vram_free(unsigned long paddr, size_t size); |
32 | extern int omap_vram_alloc(int mtype, size_t size, unsigned long *paddr); | 28 | extern int omap_vram_alloc(size_t size, unsigned long *paddr); |
33 | extern int omap_vram_reserve(unsigned long paddr, size_t size); | 29 | extern int omap_vram_reserve(unsigned long paddr, size_t size); |
34 | extern void omap_vram_get_info(unsigned long *vram, unsigned long *free_vram, | 30 | extern void omap_vram_get_info(unsigned long *vram, unsigned long *free_vram, |
35 | unsigned long *largest_free_block); | 31 | unsigned long *largest_free_block); |
36 | 32 | ||
37 | #ifdef CONFIG_OMAP2_VRAM | 33 | #ifdef CONFIG_OMAP2_VRAM |
38 | extern void omap_vram_set_sdram_vram(u32 size, u32 start); | 34 | extern void omap_vram_set_sdram_vram(u32 size, u32 start); |
39 | extern void omap_vram_set_sram_vram(u32 size, u32 start); | ||
40 | 35 | ||
41 | extern void omap_vram_reserve_sdram_memblock(void); | 36 | extern void omap_vram_reserve_sdram_memblock(void); |
42 | extern unsigned long omap_vram_reserve_sram(unsigned long sram_pstart, | ||
43 | unsigned long sram_vstart, | ||
44 | unsigned long sram_size, | ||
45 | unsigned long pstart_avail, | ||
46 | unsigned long size_avail); | ||
47 | #else | 37 | #else |
48 | static inline void omap_vram_set_sdram_vram(u32 size, u32 start) { } | 38 | static inline void omap_vram_set_sdram_vram(u32 size, u32 start) { } |
49 | static inline void omap_vram_set_sram_vram(u32 size, u32 start) { } | ||
50 | 39 | ||
51 | static inline void omap_vram_reserve_sdram_memblock(void) { } | 40 | static inline void omap_vram_reserve_sdram_memblock(void) { } |
52 | static inline unsigned long omap_vram_reserve_sram(unsigned long sram_pstart, | ||
53 | unsigned long sram_vstart, | ||
54 | unsigned long sram_size, | ||
55 | unsigned long pstart_avail, | ||
56 | unsigned long size_avail) | ||
57 | { | ||
58 | return 0; | ||
59 | } | ||
60 | #endif | 41 | #endif |
61 | 42 | ||
62 | #endif | 43 | #endif |