diff options
| author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2013-03-28 10:53:42 -0400 |
|---|---|---|
| committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2013-09-27 02:26:19 -0400 |
| commit | 8af2c2869fd129bce0d0dfd86c6364c1096f9eff (patch) | |
| tree | dd04bfc8f8be291b947fb37e8c19dc3e30bf72a5 | |
| parent | 090fd59308c9d50b8eabf71cd28b5513250a7b79 (diff) | |
video: atmel_lcdfb: fix platform data struct
Today we mix pdata and drivers data in the struct atmel_lcdfb_info
Fix it and introduce a new struct atmel_lcdfb_pdata for platform data only
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
| -rw-r--r-- | arch/arm/mach-at91/at91sam9261_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9g45_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/at91sam9rl_devices.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board-sam9261ek.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board-sam9263ek.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board-sam9m10g45ek.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board-sam9rlek.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-at91/board.h | 4 | ||||
| -rw-r--r-- | arch/avr32/boards/atngw100/evklcd10x.c | 6 | ||||
| -rw-r--r-- | arch/avr32/boards/atngw100/mrmt.c | 4 | ||||
| -rw-r--r-- | arch/avr32/boards/atstk1000/atstk1000.h | 2 | ||||
| -rw-r--r-- | arch/avr32/boards/atstk1000/setup.c | 2 | ||||
| -rw-r--r-- | arch/avr32/boards/favr-32/setup.c | 2 | ||||
| -rw-r--r-- | arch/avr32/boards/hammerhead/setup.c | 2 | ||||
| -rw-r--r-- | arch/avr32/boards/merisc/display.c | 2 | ||||
| -rw-r--r-- | arch/avr32/boards/mimc200/setup.c | 4 | ||||
| -rw-r--r-- | arch/avr32/mach-at32ap/at32ap700x.c | 8 | ||||
| -rw-r--r-- | arch/avr32/mach-at32ap/include/mach/board.h | 4 | ||||
| -rw-r--r-- | drivers/video/atmel_lcdfb.c | 105 | ||||
| -rw-r--r-- | include/video/atmel_lcdc.h | 23 |
21 files changed, 109 insertions, 101 deletions
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index 629ea5fc95cf..b2a34740146a 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
| @@ -465,7 +465,7 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) | |||
| 465 | 465 | ||
| 466 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | 466 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) |
| 467 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); | 467 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); |
| 468 | static struct atmel_lcdfb_info lcdc_data; | 468 | static struct atmel_lcdfb_pdata lcdc_data; |
| 469 | 469 | ||
| 470 | static struct resource lcdc_resources[] = { | 470 | static struct resource lcdc_resources[] = { |
| 471 | [0] = { | 471 | [0] = { |
| @@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = { | |||
| 498 | .num_resources = ARRAY_SIZE(lcdc_resources), | 498 | .num_resources = ARRAY_SIZE(lcdc_resources), |
| 499 | }; | 499 | }; |
| 500 | 500 | ||
| 501 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | 501 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) |
| 502 | { | 502 | { |
| 503 | if (!data) { | 503 | if (!data) { |
| 504 | return; | 504 | return; |
| @@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | |||
| 559 | platform_device_register(&at91_lcdc_device); | 559 | platform_device_register(&at91_lcdc_device); |
| 560 | } | 560 | } |
| 561 | #else | 561 | #else |
| 562 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | 562 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {} |
| 563 | #endif | 563 | #endif |
| 564 | 564 | ||
| 565 | 565 | ||
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index 858c8aac2daf..4aeadddbc181 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
| @@ -832,7 +832,7 @@ void __init at91_add_device_can(struct at91_can_data *data) {} | |||
| 832 | 832 | ||
| 833 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | 833 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) |
| 834 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); | 834 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); |
| 835 | static struct atmel_lcdfb_info lcdc_data; | 835 | static struct atmel_lcdfb_pdata lcdc_data; |
| 836 | 836 | ||
| 837 | static struct resource lcdc_resources[] = { | 837 | static struct resource lcdc_resources[] = { |
| 838 | [0] = { | 838 | [0] = { |
| @@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = { | |||
| 859 | .num_resources = ARRAY_SIZE(lcdc_resources), | 859 | .num_resources = ARRAY_SIZE(lcdc_resources), |
| 860 | }; | 860 | }; |
| 861 | 861 | ||
| 862 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | 862 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) |
| 863 | { | 863 | { |
| 864 | if (!data) | 864 | if (!data) |
| 865 | return; | 865 | return; |
| @@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | |||
| 891 | platform_device_register(&at91_lcdc_device); | 891 | platform_device_register(&at91_lcdc_device); |
| 892 | } | 892 | } |
| 893 | #else | 893 | #else |
| 894 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | 894 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {} |
| 895 | #endif | 895 | #endif |
| 896 | 896 | ||
| 897 | 897 | ||
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c index acb703e13331..cb36fa872d30 100644 --- a/arch/arm/mach-at91/at91sam9g45_devices.c +++ b/arch/arm/mach-at91/at91sam9g45_devices.c | |||
| @@ -965,7 +965,7 @@ void __init at91_add_device_isi(struct isi_platform_data *data, | |||
| 965 | 965 | ||
| 966 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | 966 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) |
| 967 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); | 967 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); |
| 968 | static struct atmel_lcdfb_info lcdc_data; | 968 | static struct atmel_lcdfb_pdata lcdc_data; |
| 969 | 969 | ||
| 970 | static struct resource lcdc_resources[] = { | 970 | static struct resource lcdc_resources[] = { |
| 971 | [0] = { | 971 | [0] = { |
| @@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = { | |||
| 991 | .num_resources = ARRAY_SIZE(lcdc_resources), | 991 | .num_resources = ARRAY_SIZE(lcdc_resources), |
| 992 | }; | 992 | }; |
| 993 | 993 | ||
| 994 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | 994 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) |
| 995 | { | 995 | { |
| 996 | if (!data) | 996 | if (!data) |
| 997 | return; | 997 | return; |
| @@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | |||
| 1037 | platform_device_register(&at91_lcdc_device); | 1037 | platform_device_register(&at91_lcdc_device); |
| 1038 | } | 1038 | } |
| 1039 | #else | 1039 | #else |
| 1040 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | 1040 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {} |
| 1041 | #endif | 1041 | #endif |
| 1042 | 1042 | ||
| 1043 | 1043 | ||
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index 352468f265a9..a698bdab2cce 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
| @@ -498,7 +498,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) {} | |||
| 498 | 498 | ||
| 499 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | 499 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) |
| 500 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); | 500 | static u64 lcdc_dmamask = DMA_BIT_MASK(32); |
| 501 | static struct atmel_lcdfb_info lcdc_data; | 501 | static struct atmel_lcdfb_pdata lcdc_data; |
| 502 | 502 | ||
| 503 | static struct resource lcdc_resources[] = { | 503 | static struct resource lcdc_resources[] = { |
| 504 | [0] = { | 504 | [0] = { |
| @@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = { | |||
| 525 | .num_resources = ARRAY_SIZE(lcdc_resources), | 525 | .num_resources = ARRAY_SIZE(lcdc_resources), |
| 526 | }; | 526 | }; |
| 527 | 527 | ||
| 528 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | 528 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) |
| 529 | { | 529 | { |
| 530 | if (!data) { | 530 | if (!data) { |
| 531 | return; | 531 | return; |
| @@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | |||
| 557 | platform_device_register(&at91_lcdc_device); | 557 | platform_device_register(&at91_lcdc_device); |
| 558 | } | 558 | } |
| 559 | #else | 559 | #else |
| 560 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | 560 | void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {} |
| 561 | #endif | 561 | #endif |
| 562 | 562 | ||
| 563 | 563 | ||
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index d3437624ca4e..4ab1ba7557e4 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c | |||
| @@ -401,7 +401,7 @@ static void at91_lcdc_stn_power_control(int on) | |||
| 401 | } | 401 | } |
| 402 | } | 402 | } |
| 403 | 403 | ||
| 404 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 404 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = { |
| 405 | .default_bpp = 1, | 405 | .default_bpp = 1, |
| 406 | .default_dmacon = ATMEL_LCDC_DMAEN, | 406 | .default_dmacon = ATMEL_LCDC_DMAEN, |
| 407 | .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2, | 407 | .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2, |
| @@ -453,7 +453,7 @@ static void at91_lcdc_tft_power_control(int on) | |||
| 453 | at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */ | 453 | at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */ |
| 454 | } | 454 | } |
| 455 | 455 | ||
| 456 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 456 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = { |
| 457 | .lcdcon_is_backlight = true, | 457 | .lcdcon_is_backlight = true, |
| 458 | .default_bpp = 16, | 458 | .default_bpp = 16, |
| 459 | .default_dmacon = ATMEL_LCDC_DMAEN, | 459 | .default_dmacon = ATMEL_LCDC_DMAEN, |
| @@ -465,7 +465,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | |||
| 465 | #endif | 465 | #endif |
| 466 | 466 | ||
| 467 | #else | 467 | #else |
| 468 | static struct atmel_lcdfb_info __initdata ek_lcdc_data; | 468 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data; |
| 469 | #endif | 469 | #endif |
| 470 | 470 | ||
| 471 | 471 | ||
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index 3284df05df14..0fdae3f1541d 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c | |||
| @@ -281,7 +281,7 @@ static void at91_lcdc_power_control(int on) | |||
| 281 | } | 281 | } |
| 282 | 282 | ||
| 283 | /* Driver datas */ | 283 | /* Driver datas */ |
| 284 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 284 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = { |
| 285 | .lcdcon_is_backlight = true, | 285 | .lcdcon_is_backlight = true, |
| 286 | .default_bpp = 16, | 286 | .default_bpp = 16, |
| 287 | .default_dmacon = ATMEL_LCDC_DMAEN, | 287 | .default_dmacon = ATMEL_LCDC_DMAEN, |
| @@ -292,7 +292,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | |||
| 292 | }; | 292 | }; |
| 293 | 293 | ||
| 294 | #else | 294 | #else |
| 295 | static struct atmel_lcdfb_info __initdata ek_lcdc_data; | 295 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data; |
| 296 | #endif | 296 | #endif |
| 297 | 297 | ||
| 298 | 298 | ||
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c index 2a94896a1375..ef39078c8ce2 100644 --- a/arch/arm/mach-at91/board-sam9m10g45ek.c +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c | |||
| @@ -284,7 +284,7 @@ static struct fb_monspecs at91fb_default_monspecs = { | |||
| 284 | | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) | 284 | | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) |
| 285 | 285 | ||
| 286 | /* Driver datas */ | 286 | /* Driver datas */ |
| 287 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 287 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = { |
| 288 | .lcdcon_is_backlight = true, | 288 | .lcdcon_is_backlight = true, |
| 289 | .default_bpp = 32, | 289 | .default_bpp = 32, |
| 290 | .default_dmacon = ATMEL_LCDC_DMAEN, | 290 | .default_dmacon = ATMEL_LCDC_DMAEN, |
| @@ -295,7 +295,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | |||
| 295 | }; | 295 | }; |
| 296 | 296 | ||
| 297 | #else | 297 | #else |
| 298 | static struct atmel_lcdfb_info __initdata ek_lcdc_data; | 298 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data; |
| 299 | #endif | 299 | #endif |
| 300 | 300 | ||
| 301 | 301 | ||
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c index aa265dcf2128..b77d7a9febd8 100644 --- a/arch/arm/mach-at91/board-sam9rlek.c +++ b/arch/arm/mach-at91/board-sam9rlek.c | |||
| @@ -179,7 +179,7 @@ static void at91_lcdc_power_control(int on) | |||
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | /* Driver datas */ | 181 | /* Driver datas */ |
| 182 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | 182 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = { |
| 183 | .lcdcon_is_backlight = true, | 183 | .lcdcon_is_backlight = true, |
| 184 | .default_bpp = 16, | 184 | .default_bpp = 16, |
| 185 | .default_dmacon = ATMEL_LCDC_DMAEN, | 185 | .default_dmacon = ATMEL_LCDC_DMAEN, |
| @@ -191,7 +191,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | |||
| 191 | }; | 191 | }; |
| 192 | 192 | ||
| 193 | #else | 193 | #else |
| 194 | static struct atmel_lcdfb_info __initdata ek_lcdc_data; | 194 | static struct atmel_lcdfb_pdata __initdata ek_lcdc_data; |
| 195 | #endif | 195 | #endif |
| 196 | 196 | ||
| 197 | 197 | ||
diff --git a/arch/arm/mach-at91/board.h b/arch/arm/mach-at91/board.h index 4a234fb2ab3b..6c08b341167d 100644 --- a/arch/arm/mach-at91/board.h +++ b/arch/arm/mach-at91/board.h | |||
| @@ -107,8 +107,8 @@ extern void __init at91_add_device_pwm(u32 mask); | |||
| 107 | extern void __init at91_add_device_ssc(unsigned id, unsigned pins); | 107 | extern void __init at91_add_device_ssc(unsigned id, unsigned pins); |
| 108 | 108 | ||
| 109 | /* LCD Controller */ | 109 | /* LCD Controller */ |
| 110 | struct atmel_lcdfb_info; | 110 | struct atmel_lcdfb_pdata; |
| 111 | extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data); | 111 | extern void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data); |
| 112 | 112 | ||
| 113 | /* AC97 */ | 113 | /* AC97 */ |
| 114 | extern void __init at91_add_device_ac97(struct ac97c_platform_data *data); | 114 | extern void __init at91_add_device_ac97(struct ac97c_platform_data *data); |
diff --git a/arch/avr32/boards/atngw100/evklcd10x.c b/arch/avr32/boards/atngw100/evklcd10x.c index 20388750d564..dc4280413e9d 100644 --- a/arch/avr32/boards/atngw100/evklcd10x.c +++ b/arch/avr32/boards/atngw100/evklcd10x.c | |||
| @@ -58,7 +58,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = { | |||
| 58 | .dclkmax = 28330000, | 58 | .dclkmax = 28330000, |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = { | 61 | static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = { |
| 62 | .default_bpp = 16, | 62 | .default_bpp = 16, |
| 63 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 63 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 64 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 64 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
| @@ -96,7 +96,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = { | |||
| 96 | .dclkmax = 7000000, | 96 | .dclkmax = 7000000, |
| 97 | }; | 97 | }; |
| 98 | 98 | ||
| 99 | static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = { | 99 | static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = { |
| 100 | .default_bpp = 16, | 100 | .default_bpp = 16, |
| 101 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 101 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 102 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 102 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
| @@ -134,7 +134,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = { | |||
| 134 | .dclkmax = 6400000, | 134 | .dclkmax = 6400000, |
| 135 | }; | 135 | }; |
| 136 | 136 | ||
| 137 | static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = { | 137 | static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = { |
| 138 | .default_bpp = 16, | 138 | .default_bpp = 16, |
| 139 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 139 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 140 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 140 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/boards/atngw100/mrmt.c b/arch/avr32/boards/atngw100/mrmt.c index 7de083d19b7e..1ba09e4c02b1 100644 --- a/arch/avr32/boards/atngw100/mrmt.c +++ b/arch/avr32/boards/atngw100/mrmt.c | |||
| @@ -83,7 +83,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = { | |||
| 83 | .dclkmax = 9260000, | 83 | .dclkmax = 9260000, |
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | static struct atmel_lcdfb_info __initdata rmt_lcdc_data = { | 86 | static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = { |
| 87 | .default_bpp = 24, | 87 | .default_bpp = 24, |
| 88 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 88 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 89 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 89 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
| @@ -126,7 +126,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = { | |||
| 126 | .dclkmax = 9260000, | 126 | .dclkmax = 9260000, |
| 127 | }; | 127 | }; |
| 128 | 128 | ||
| 129 | static struct atmel_lcdfb_info __initdata rmt_lcdc_data = { | 129 | static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = { |
| 130 | .default_bpp = 24, | 130 | .default_bpp = 24, |
| 131 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 131 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 132 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 132 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/boards/atstk1000/atstk1000.h b/arch/avr32/boards/atstk1000/atstk1000.h index 9392d3252865..653cc09e536c 100644 --- a/arch/avr32/boards/atstk1000/atstk1000.h +++ b/arch/avr32/boards/atstk1000/atstk1000.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H | 10 | #ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H |
| 11 | #define __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H | 11 | #define __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H |
| 12 | 12 | ||
| 13 | extern struct atmel_lcdfb_info atstk1000_lcdc_data; | 13 | extern struct atmel_lcdfb_pdata atstk1000_lcdc_data; |
| 14 | 14 | ||
| 15 | void atstk1000_setup_j2_leds(void); | 15 | void atstk1000_setup_j2_leds(void); |
| 16 | 16 | ||
diff --git a/arch/avr32/boards/atstk1000/setup.c b/arch/avr32/boards/atstk1000/setup.c index 2d6b560115d9..b6b88f5e0b43 100644 --- a/arch/avr32/boards/atstk1000/setup.c +++ b/arch/avr32/boards/atstk1000/setup.c | |||
| @@ -55,7 +55,7 @@ static struct fb_monspecs __initdata atstk1000_default_monspecs = { | |||
| 55 | .dclkmax = 30000000, | 55 | .dclkmax = 30000000, |
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | struct atmel_lcdfb_info __initdata atstk1000_lcdc_data = { | 58 | struct atmel_lcdfb_pdata __initdata atstk1000_lcdc_data = { |
| 59 | .default_bpp = 24, | 59 | .default_bpp = 24, |
| 60 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 60 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 61 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 61 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/boards/favr-32/setup.c b/arch/avr32/boards/favr-32/setup.c index 27bd6fbe21cb..7b1f2cd85400 100644 --- a/arch/avr32/boards/favr-32/setup.c +++ b/arch/avr32/boards/favr-32/setup.c | |||
| @@ -125,7 +125,7 @@ static struct fb_monspecs __initdata favr32_default_monspecs = { | |||
| 125 | .dclkmax = 28000000, | 125 | .dclkmax = 28000000, |
| 126 | }; | 126 | }; |
| 127 | 127 | ||
| 128 | struct atmel_lcdfb_info __initdata favr32_lcdc_data = { | 128 | struct atmel_lcdfb_pdata __initdata favr32_lcdc_data = { |
| 129 | .default_bpp = 16, | 129 | .default_bpp = 16, |
| 130 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 130 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 131 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 131 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/boards/hammerhead/setup.c b/arch/avr32/boards/hammerhead/setup.c index 9d1efd1cd425..dc0e317f2ecd 100644 --- a/arch/avr32/boards/hammerhead/setup.c +++ b/arch/avr32/boards/hammerhead/setup.c | |||
| @@ -77,7 +77,7 @@ static struct fb_monspecs __initdata hammerhead_hda350t_monspecs = { | |||
| 77 | .dclkmax = 10000000, | 77 | .dclkmax = 10000000, |
| 78 | }; | 78 | }; |
| 79 | 79 | ||
| 80 | struct atmel_lcdfb_info __initdata hammerhead_lcdc_data = { | 80 | struct atmel_lcdfb_pdata __initdata hammerhead_lcdc_data = { |
| 81 | .default_bpp = 24, | 81 | .default_bpp = 24, |
| 82 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 82 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 83 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 83 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/boards/merisc/display.c b/arch/avr32/boards/merisc/display.c index 85a543cd4abc..e7683ee7ed40 100644 --- a/arch/avr32/boards/merisc/display.c +++ b/arch/avr32/boards/merisc/display.c | |||
| @@ -45,7 +45,7 @@ static struct fb_monspecs merisc_fb_monspecs = { | |||
| 45 | .dclkmax = 30000000, | 45 | .dclkmax = 30000000, |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | struct atmel_lcdfb_info merisc_lcdc_data = { | 48 | struct atmel_lcdfb_pdata merisc_lcdc_data = { |
| 49 | .default_bpp = 24, | 49 | .default_bpp = 24, |
| 50 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 50 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 51 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 51 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/boards/mimc200/setup.c b/arch/avr32/boards/mimc200/setup.c index 05358aa5ef7d..1cb8e9cc5cfa 100644 --- a/arch/avr32/boards/mimc200/setup.c +++ b/arch/avr32/boards/mimc200/setup.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | extern struct atmel_lcdfb_info mimc200_lcdc_data; | 11 | extern struct atmel_lcdfb_pdata mimc200_lcdc_data; |
| 12 | 12 | ||
| 13 | #include <linux/clk.h> | 13 | #include <linux/clk.h> |
| 14 | #include <linux/etherdevice.h> | 14 | #include <linux/etherdevice.h> |
| @@ -71,7 +71,7 @@ static struct fb_monspecs __initdata mimc200_default_monspecs = { | |||
| 71 | .dclkmax = 25200000, | 71 | .dclkmax = 25200000, |
| 72 | }; | 72 | }; |
| 73 | 73 | ||
| 74 | struct atmel_lcdfb_info __initdata mimc200_lcdc_data = { | 74 | struct atmel_lcdfb_pdata __initdata mimc200_lcdc_data = { |
| 75 | .default_bpp = 16, | 75 | .default_bpp = 16, |
| 76 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, | 76 | .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, |
| 77 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT | 77 | .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT |
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c index a68f3cf7c3c1..a1f4d1e91b52 100644 --- a/arch/avr32/mach-at32ap/at32ap700x.c +++ b/arch/avr32/mach-at32ap/at32ap700x.c | |||
| @@ -1439,7 +1439,7 @@ fail: | |||
| 1439 | * LCDC | 1439 | * LCDC |
| 1440 | * -------------------------------------------------------------------- */ | 1440 | * -------------------------------------------------------------------- */ |
| 1441 | #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002) | 1441 | #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002) |
| 1442 | static struct atmel_lcdfb_info atmel_lcdfb0_data; | 1442 | static struct atmel_lcdfb_pdata atmel_lcdfb0_data; |
| 1443 | static struct resource atmel_lcdfb0_resource[] = { | 1443 | static struct resource atmel_lcdfb0_resource[] = { |
| 1444 | { | 1444 | { |
| 1445 | .start = 0xff000000, | 1445 | .start = 0xff000000, |
| @@ -1467,12 +1467,12 @@ static struct clk atmel_lcdfb0_pixclk = { | |||
| 1467 | }; | 1467 | }; |
| 1468 | 1468 | ||
| 1469 | struct platform_device *__init | 1469 | struct platform_device *__init |
| 1470 | at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data, | 1470 | at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data, |
| 1471 | unsigned long fbmem_start, unsigned long fbmem_len, | 1471 | unsigned long fbmem_start, unsigned long fbmem_len, |
| 1472 | u64 pin_mask) | 1472 | u64 pin_mask) |
| 1473 | { | 1473 | { |
| 1474 | struct platform_device *pdev; | 1474 | struct platform_device *pdev; |
| 1475 | struct atmel_lcdfb_info *info; | 1475 | struct atmel_lcdfb_pdata *info; |
| 1476 | struct fb_monspecs *monspecs; | 1476 | struct fb_monspecs *monspecs; |
| 1477 | struct fb_videomode *modedb; | 1477 | struct fb_videomode *modedb; |
| 1478 | unsigned int modedb_size; | 1478 | unsigned int modedb_size; |
| @@ -1529,7 +1529,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data, | |||
| 1529 | } | 1529 | } |
| 1530 | 1530 | ||
| 1531 | info = pdev->dev.platform_data; | 1531 | info = pdev->dev.platform_data; |
| 1532 | memcpy(info, data, sizeof(struct atmel_lcdfb_info)); | 1532 | memcpy(info, data, sizeof(struct atmel_lcdfb_pdata)); |
| 1533 | info->default_monspecs = monspecs; | 1533 | info->default_monspecs = monspecs; |
| 1534 | 1534 | ||
| 1535 | pdev->name = "at32ap-lcdfb"; | 1535 | pdev->name = "at32ap-lcdfb"; |
diff --git a/arch/avr32/mach-at32ap/include/mach/board.h b/arch/avr32/mach-at32ap/include/mach/board.h index d485b0391357..f1a316d52c73 100644 --- a/arch/avr32/mach-at32ap/include/mach/board.h +++ b/arch/avr32/mach-at32ap/include/mach/board.h | |||
| @@ -44,9 +44,9 @@ struct platform_device * | |||
| 44 | at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n); | 44 | at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n); |
| 45 | void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n); | 45 | void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n); |
| 46 | 46 | ||
| 47 | struct atmel_lcdfb_info; | 47 | struct atmel_lcdfb_pdata; |
| 48 | struct platform_device * | 48 | struct platform_device * |
| 49 | at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data, | 49 | at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data, |
| 50 | unsigned long fbmem_start, unsigned long fbmem_len, | 50 | unsigned long fbmem_start, unsigned long fbmem_len, |
| 51 | u64 pin_mask); | 51 | u64 pin_mask); |
| 52 | 52 | ||
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c index 3f7d6dc3408d..0d7214df1237 100644 --- a/drivers/video/atmel_lcdfb.c +++ b/drivers/video/atmel_lcdfb.c | |||
| @@ -20,12 +20,44 @@ | |||
| 20 | #include <linux/gfp.h> | 20 | #include <linux/gfp.h> |
| 21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
| 22 | #include <linux/platform_data/atmel.h> | 22 | #include <linux/platform_data/atmel.h> |
| 23 | #include <video/of_display_timing.h> | ||
| 23 | 24 | ||
| 24 | #include <mach/cpu.h> | 25 | #include <mach/cpu.h> |
| 25 | #include <asm/gpio.h> | 26 | #include <asm/gpio.h> |
| 26 | 27 | ||
| 27 | #include <video/atmel_lcdc.h> | 28 | #include <video/atmel_lcdc.h> |
| 28 | 29 | ||
| 30 | struct atmel_lcdfb_config { | ||
| 31 | bool have_alt_pixclock; | ||
| 32 | bool have_hozval; | ||
| 33 | bool have_intensity_bit; | ||
| 34 | }; | ||
| 35 | |||
| 36 | /* LCD Controller info data structure, stored in device platform_data */ | ||
| 37 | struct atmel_lcdfb_info { | ||
| 38 | spinlock_t lock; | ||
| 39 | struct fb_info *info; | ||
| 40 | void __iomem *mmio; | ||
| 41 | int irq_base; | ||
| 42 | struct work_struct task; | ||
| 43 | |||
| 44 | unsigned int smem_len; | ||
| 45 | struct platform_device *pdev; | ||
| 46 | struct clk *bus_clk; | ||
| 47 | struct clk *lcdc_clk; | ||
| 48 | |||
| 49 | struct backlight_device *backlight; | ||
| 50 | u8 bl_power; | ||
| 51 | u8 saved_lcdcon; | ||
| 52 | |||
| 53 | u32 pseudo_palette[16]; | ||
| 54 | bool have_intensity_bit; | ||
| 55 | |||
| 56 | struct atmel_lcdfb_pdata pdata; | ||
| 57 | |||
| 58 | struct atmel_lcdfb_config *config; | ||
| 59 | }; | ||
| 60 | |||
| 29 | #define lcdc_readl(sinfo, reg) __raw_readl((sinfo)->mmio+(reg)) | 61 | #define lcdc_readl(sinfo, reg) __raw_readl((sinfo)->mmio+(reg)) |
| 30 | #define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg)) | 62 | #define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg)) |
| 31 | 63 | ||
| @@ -34,12 +66,6 @@ | |||
| 34 | #define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */ | 66 | #define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */ |
| 35 | #define ATMEL_LCDC_FIFO_SIZE 512 /* words */ | 67 | #define ATMEL_LCDC_FIFO_SIZE 512 /* words */ |
| 36 | 68 | ||
| 37 | struct atmel_lcdfb_config { | ||
| 38 | bool have_alt_pixclock; | ||
| 39 | bool have_hozval; | ||
| 40 | bool have_intensity_bit; | ||
| 41 | }; | ||
| 42 | |||
| 43 | static struct atmel_lcdfb_config at91sam9261_config = { | 69 | static struct atmel_lcdfb_config at91sam9261_config = { |
| 44 | .have_hozval = true, | 70 | .have_hozval = true, |
| 45 | .have_intensity_bit = true, | 71 | .have_intensity_bit = true, |
| @@ -248,15 +274,17 @@ static void exit_backlight(struct atmel_lcdfb_info *sinfo) | |||
| 248 | 274 | ||
| 249 | static void init_contrast(struct atmel_lcdfb_info *sinfo) | 275 | static void init_contrast(struct atmel_lcdfb_info *sinfo) |
| 250 | { | 276 | { |
| 277 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 278 | |||
| 251 | /* contrast pwm can be 'inverted' */ | 279 | /* contrast pwm can be 'inverted' */ |
| 252 | if (sinfo->lcdcon_pol_negative) | 280 | if (pdata->lcdcon_pol_negative) |
| 253 | contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE); | 281 | contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE); |
| 254 | 282 | ||
| 255 | /* have some default contrast/backlight settings */ | 283 | /* have some default contrast/backlight settings */ |
| 256 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr); | 284 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr); |
| 257 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT); | 285 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT); |
| 258 | 286 | ||
| 259 | if (sinfo->lcdcon_is_backlight) | 287 | if (pdata->lcdcon_is_backlight) |
| 260 | init_backlight(sinfo); | 288 | init_backlight(sinfo); |
| 261 | } | 289 | } |
| 262 | 290 | ||
| @@ -299,9 +327,11 @@ static unsigned long compute_hozval(struct atmel_lcdfb_info *sinfo, | |||
| 299 | 327 | ||
| 300 | static void atmel_lcdfb_stop_nowait(struct atmel_lcdfb_info *sinfo) | 328 | static void atmel_lcdfb_stop_nowait(struct atmel_lcdfb_info *sinfo) |
| 301 | { | 329 | { |
| 330 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 331 | |||
| 302 | /* Turn off the LCD controller and the DMA controller */ | 332 | /* Turn off the LCD controller and the DMA controller */ |
| 303 | lcdc_writel(sinfo, ATMEL_LCDC_PWRCON, | 333 | lcdc_writel(sinfo, ATMEL_LCDC_PWRCON, |
| 304 | sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET); | 334 | pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET); |
| 305 | 335 | ||
| 306 | /* Wait for the LCDC core to become idle */ | 336 | /* Wait for the LCDC core to become idle */ |
| 307 | while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY) | 337 | while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY) |
| @@ -321,9 +351,11 @@ static void atmel_lcdfb_stop(struct atmel_lcdfb_info *sinfo) | |||
| 321 | 351 | ||
| 322 | static void atmel_lcdfb_start(struct atmel_lcdfb_info *sinfo) | 352 | static void atmel_lcdfb_start(struct atmel_lcdfb_info *sinfo) |
| 323 | { | 353 | { |
| 324 | lcdc_writel(sinfo, ATMEL_LCDC_DMACON, sinfo->default_dmacon); | 354 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; |
| 355 | |||
| 356 | lcdc_writel(sinfo, ATMEL_LCDC_DMACON, pdata->default_dmacon); | ||
| 325 | lcdc_writel(sinfo, ATMEL_LCDC_PWRCON, | 357 | lcdc_writel(sinfo, ATMEL_LCDC_PWRCON, |
| 326 | (sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET) | 358 | (pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET) |
| 327 | | ATMEL_LCDC_PWR); | 359 | | ATMEL_LCDC_PWR); |
| 328 | } | 360 | } |
| 329 | 361 | ||
| @@ -424,6 +456,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var, | |||
| 424 | { | 456 | { |
| 425 | struct device *dev = info->device; | 457 | struct device *dev = info->device; |
| 426 | struct atmel_lcdfb_info *sinfo = info->par; | 458 | struct atmel_lcdfb_info *sinfo = info->par; |
| 459 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 427 | unsigned long clk_value_khz; | 460 | unsigned long clk_value_khz; |
| 428 | 461 | ||
| 429 | clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000; | 462 | clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000; |
| @@ -510,7 +543,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var, | |||
| 510 | else | 543 | else |
| 511 | var->green.length = 6; | 544 | var->green.length = 6; |
| 512 | 545 | ||
| 513 | if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { | 546 | if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { |
| 514 | /* RGB:5X5 mode */ | 547 | /* RGB:5X5 mode */ |
| 515 | var->red.offset = var->green.length + 5; | 548 | var->red.offset = var->green.length + 5; |
| 516 | var->blue.offset = 0; | 549 | var->blue.offset = 0; |
| @@ -527,7 +560,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var, | |||
| 527 | var->transp.length = 8; | 560 | var->transp.length = 8; |
| 528 | /* fall through */ | 561 | /* fall through */ |
| 529 | case 24: | 562 | case 24: |
| 530 | if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { | 563 | if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { |
| 531 | /* RGB:888 mode */ | 564 | /* RGB:888 mode */ |
| 532 | var->red.offset = 16; | 565 | var->red.offset = 16; |
| 533 | var->blue.offset = 0; | 566 | var->blue.offset = 0; |
| @@ -576,6 +609,7 @@ static void atmel_lcdfb_reset(struct atmel_lcdfb_info *sinfo) | |||
| 576 | static int atmel_lcdfb_set_par(struct fb_info *info) | 609 | static int atmel_lcdfb_set_par(struct fb_info *info) |
| 577 | { | 610 | { |
| 578 | struct atmel_lcdfb_info *sinfo = info->par; | 611 | struct atmel_lcdfb_info *sinfo = info->par; |
| 612 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 579 | unsigned long hozval_linesz; | 613 | unsigned long hozval_linesz; |
| 580 | unsigned long value; | 614 | unsigned long value; |
| 581 | unsigned long clk_value_khz; | 615 | unsigned long clk_value_khz; |
| @@ -637,7 +671,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info) | |||
| 637 | 671 | ||
| 638 | 672 | ||
| 639 | /* Initialize control register 2 */ | 673 | /* Initialize control register 2 */ |
| 640 | value = sinfo->default_lcdcon2; | 674 | value = pdata->default_lcdcon2; |
| 641 | 675 | ||
| 642 | if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT)) | 676 | if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT)) |
| 643 | value |= ATMEL_LCDC_INVLINE_INVERTED; | 677 | value |= ATMEL_LCDC_INVLINE_INVERTED; |
| @@ -741,6 +775,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red, | |||
| 741 | unsigned int transp, struct fb_info *info) | 775 | unsigned int transp, struct fb_info *info) |
| 742 | { | 776 | { |
| 743 | struct atmel_lcdfb_info *sinfo = info->par; | 777 | struct atmel_lcdfb_info *sinfo = info->par; |
| 778 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 744 | unsigned int val; | 779 | unsigned int val; |
| 745 | u32 *pal; | 780 | u32 *pal; |
| 746 | int ret = 1; | 781 | int ret = 1; |
| @@ -777,8 +812,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red, | |||
| 777 | */ | 812 | */ |
| 778 | } else { | 813 | } else { |
| 779 | /* new style BGR:565 / RGB:565 */ | 814 | /* new style BGR:565 / RGB:565 */ |
| 780 | if (sinfo->lcd_wiring_mode == | 815 | if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { |
| 781 | ATMEL_LCDC_WIRING_RGB) { | ||
| 782 | val = ((blue >> 11) & 0x001f); | 816 | val = ((blue >> 11) & 0x001f); |
| 783 | val |= ((red >> 0) & 0xf800); | 817 | val |= ((red >> 0) & 0xf800); |
| 784 | } else { | 818 | } else { |
| @@ -918,7 +952,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) | |||
| 918 | struct device *dev = &pdev->dev; | 952 | struct device *dev = &pdev->dev; |
| 919 | struct fb_info *info; | 953 | struct fb_info *info; |
| 920 | struct atmel_lcdfb_info *sinfo; | 954 | struct atmel_lcdfb_info *sinfo; |
| 921 | struct atmel_lcdfb_info *pdata_sinfo; | 955 | struct atmel_lcdfb_pdata *pdata; |
| 922 | struct fb_videomode fbmode; | 956 | struct fb_videomode fbmode; |
| 923 | struct resource *regs = NULL; | 957 | struct resource *regs = NULL; |
| 924 | struct resource *map = NULL; | 958 | struct resource *map = NULL; |
| @@ -936,17 +970,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) | |||
| 936 | sinfo = info->par; | 970 | sinfo = info->par; |
| 937 | 971 | ||
| 938 | if (dev_get_platdata(dev)) { | 972 | if (dev_get_platdata(dev)) { |
| 939 | pdata_sinfo = dev_get_platdata(dev); | 973 | pdata = dev_get_platdata(dev); |
| 940 | sinfo->default_bpp = pdata_sinfo->default_bpp; | 974 | sinfo->pdata = *pdata; |
| 941 | sinfo->default_dmacon = pdata_sinfo->default_dmacon; | ||
| 942 | sinfo->default_lcdcon2 = pdata_sinfo->default_lcdcon2; | ||
| 943 | sinfo->default_monspecs = pdata_sinfo->default_monspecs; | ||
| 944 | sinfo->atmel_lcdfb_power_control = pdata_sinfo->atmel_lcdfb_power_control; | ||
| 945 | sinfo->guard_time = pdata_sinfo->guard_time; | ||
| 946 | sinfo->smem_len = pdata_sinfo->smem_len; | ||
| 947 | sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight; | ||
| 948 | sinfo->lcdcon_pol_negative = pdata_sinfo->lcdcon_pol_negative; | ||
| 949 | sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode; | ||
| 950 | } else { | 975 | } else { |
| 951 | dev_err(dev, "cannot get default configuration\n"); | 976 | dev_err(dev, "cannot get default configuration\n"); |
| 952 | goto free_info; | 977 | goto free_info; |
| @@ -962,7 +987,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) | |||
| 962 | info->pseudo_palette = sinfo->pseudo_palette; | 987 | info->pseudo_palette = sinfo->pseudo_palette; |
| 963 | info->fbops = &atmel_lcdfb_ops; | 988 | info->fbops = &atmel_lcdfb_ops; |
| 964 | 989 | ||
| 965 | memcpy(&info->monspecs, sinfo->default_monspecs, sizeof(info->monspecs)); | 990 | memcpy(&info->monspecs, pdata->default_monspecs, sizeof(info->monspecs)); |
| 966 | info->fix = atmel_lcdfb_fix; | 991 | info->fix = atmel_lcdfb_fix; |
| 967 | 992 | ||
| 968 | /* Enable LCDC Clocks */ | 993 | /* Enable LCDC Clocks */ |
| @@ -980,7 +1005,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) | |||
| 980 | 1005 | ||
| 981 | ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb, | 1006 | ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb, |
| 982 | info->monspecs.modedb_len, info->monspecs.modedb, | 1007 | info->monspecs.modedb_len, info->monspecs.modedb, |
| 983 | sinfo->default_bpp); | 1008 | pdata->default_bpp); |
| 984 | if (!ret) { | 1009 | if (!ret) { |
| 985 | dev_err(dev, "no suitable video mode found\n"); | 1010 | dev_err(dev, "no suitable video mode found\n"); |
| 986 | goto stop_clk; | 1011 | goto stop_clk; |
| @@ -1097,8 +1122,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) | |||
| 1097 | fb_add_videomode(&fbmode, &info->modelist); | 1122 | fb_add_videomode(&fbmode, &info->modelist); |
| 1098 | 1123 | ||
| 1099 | /* Power up the LCDC screen */ | 1124 | /* Power up the LCDC screen */ |
| 1100 | if (sinfo->atmel_lcdfb_power_control) | 1125 | if (pdata->atmel_lcdfb_power_control) |
| 1101 | sinfo->atmel_lcdfb_power_control(1); | 1126 | pdata->atmel_lcdfb_power_control(1); |
| 1102 | 1127 | ||
| 1103 | dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n", | 1128 | dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n", |
| 1104 | info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base); | 1129 | info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base); |
| @@ -1141,15 +1166,17 @@ static int __exit atmel_lcdfb_remove(struct platform_device *pdev) | |||
| 1141 | struct device *dev = &pdev->dev; | 1166 | struct device *dev = &pdev->dev; |
| 1142 | struct fb_info *info = dev_get_drvdata(dev); | 1167 | struct fb_info *info = dev_get_drvdata(dev); |
| 1143 | struct atmel_lcdfb_info *sinfo; | 1168 | struct atmel_lcdfb_info *sinfo; |
| 1169 | struct atmel_lcdfb_pdata *pdata; | ||
| 1144 | 1170 | ||
| 1145 | if (!info || !info->par) | 1171 | if (!info || !info->par) |
| 1146 | return 0; | 1172 | return 0; |
| 1147 | sinfo = info->par; | 1173 | sinfo = info->par; |
| 1174 | pdata = &sinfo->pdata; | ||
| 1148 | 1175 | ||
| 1149 | cancel_work_sync(&sinfo->task); | 1176 | cancel_work_sync(&sinfo->task); |
| 1150 | exit_backlight(sinfo); | 1177 | exit_backlight(sinfo); |
| 1151 | if (sinfo->atmel_lcdfb_power_control) | 1178 | if (pdata->atmel_lcdfb_power_control) |
| 1152 | sinfo->atmel_lcdfb_power_control(0); | 1179 | pdata->atmel_lcdfb_power_control(0); |
| 1153 | unregister_framebuffer(info); | 1180 | unregister_framebuffer(info); |
| 1154 | atmel_lcdfb_stop_clock(sinfo); | 1181 | atmel_lcdfb_stop_clock(sinfo); |
| 1155 | clk_put(sinfo->lcdc_clk); | 1182 | clk_put(sinfo->lcdc_clk); |
| @@ -1176,6 +1203,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg) | |||
| 1176 | { | 1203 | { |
| 1177 | struct fb_info *info = platform_get_drvdata(pdev); | 1204 | struct fb_info *info = platform_get_drvdata(pdev); |
| 1178 | struct atmel_lcdfb_info *sinfo = info->par; | 1205 | struct atmel_lcdfb_info *sinfo = info->par; |
| 1206 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 1179 | 1207 | ||
| 1180 | /* | 1208 | /* |
| 1181 | * We don't want to handle interrupts while the clock is | 1209 | * We don't want to handle interrupts while the clock is |
| @@ -1185,8 +1213,8 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg) | |||
| 1185 | 1213 | ||
| 1186 | sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR); | 1214 | sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR); |
| 1187 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0); | 1215 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0); |
| 1188 | if (sinfo->atmel_lcdfb_power_control) | 1216 | if (pdata->atmel_lcdfb_power_control) |
| 1189 | sinfo->atmel_lcdfb_power_control(0); | 1217 | pdata->atmel_lcdfb_power_control(0); |
| 1190 | 1218 | ||
| 1191 | atmel_lcdfb_stop(sinfo); | 1219 | atmel_lcdfb_stop(sinfo); |
| 1192 | atmel_lcdfb_stop_clock(sinfo); | 1220 | atmel_lcdfb_stop_clock(sinfo); |
| @@ -1198,11 +1226,12 @@ static int atmel_lcdfb_resume(struct platform_device *pdev) | |||
| 1198 | { | 1226 | { |
| 1199 | struct fb_info *info = platform_get_drvdata(pdev); | 1227 | struct fb_info *info = platform_get_drvdata(pdev); |
| 1200 | struct atmel_lcdfb_info *sinfo = info->par; | 1228 | struct atmel_lcdfb_info *sinfo = info->par; |
| 1229 | struct atmel_lcdfb_pdata *pdata = &sinfo->pdata; | ||
| 1201 | 1230 | ||
| 1202 | atmel_lcdfb_start_clock(sinfo); | 1231 | atmel_lcdfb_start_clock(sinfo); |
| 1203 | atmel_lcdfb_start(sinfo); | 1232 | atmel_lcdfb_start(sinfo); |
| 1204 | if (sinfo->atmel_lcdfb_power_control) | 1233 | if (pdata->atmel_lcdfb_power_control) |
| 1205 | sinfo->atmel_lcdfb_power_control(1); | 1234 | pdata->atmel_lcdfb_power_control(1); |
| 1206 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon); | 1235 | lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon); |
| 1207 | 1236 | ||
| 1208 | /* Enable FIFO & DMA errors */ | 1237 | /* Enable FIFO & DMA errors */ |
diff --git a/include/video/atmel_lcdc.h b/include/video/atmel_lcdc.h index 0f5a2fc69af9..f197c54712b0 100644 --- a/include/video/atmel_lcdc.h +++ b/include/video/atmel_lcdc.h | |||
| @@ -31,39 +31,18 @@ | |||
| 31 | #define ATMEL_LCDC_WIRING_BGR 0 | 31 | #define ATMEL_LCDC_WIRING_BGR 0 |
| 32 | #define ATMEL_LCDC_WIRING_RGB 1 | 32 | #define ATMEL_LCDC_WIRING_RGB 1 |
| 33 | 33 | ||
| 34 | struct atmel_lcdfb_config; | ||
| 35 | 34 | ||
| 36 | /* LCD Controller info data structure, stored in device platform_data */ | 35 | /* LCD Controller info data structure, stored in device platform_data */ |
| 37 | struct atmel_lcdfb_info { | 36 | struct atmel_lcdfb_pdata { |
| 38 | spinlock_t lock; | ||
| 39 | struct fb_info *info; | ||
| 40 | void __iomem *mmio; | ||
| 41 | int irq_base; | ||
| 42 | struct work_struct task; | ||
| 43 | |||
| 44 | unsigned int guard_time; | 37 | unsigned int guard_time; |
| 45 | unsigned int smem_len; | ||
| 46 | struct platform_device *pdev; | ||
| 47 | struct clk *bus_clk; | ||
| 48 | struct clk *lcdc_clk; | ||
| 49 | |||
| 50 | #ifdef CONFIG_BACKLIGHT_ATMEL_LCDC | ||
| 51 | struct backlight_device *backlight; | ||
| 52 | u8 bl_power; | ||
| 53 | #endif | ||
| 54 | bool lcdcon_is_backlight; | 38 | bool lcdcon_is_backlight; |
| 55 | bool lcdcon_pol_negative; | 39 | bool lcdcon_pol_negative; |
| 56 | u8 saved_lcdcon; | ||
| 57 | |||
| 58 | u8 default_bpp; | 40 | u8 default_bpp; |
| 59 | u8 lcd_wiring_mode; | 41 | u8 lcd_wiring_mode; |
| 60 | unsigned int default_lcdcon2; | 42 | unsigned int default_lcdcon2; |
| 61 | unsigned int default_dmacon; | 43 | unsigned int default_dmacon; |
| 62 | void (*atmel_lcdfb_power_control)(int on); | 44 | void (*atmel_lcdfb_power_control)(int on); |
| 63 | struct fb_monspecs *default_monspecs; | 45 | struct fb_monspecs *default_monspecs; |
| 64 | u32 pseudo_palette[16]; | ||
| 65 | |||
| 66 | struct atmel_lcdfb_config *config; | ||
| 67 | }; | 46 | }; |
| 68 | 47 | ||
| 69 | #define ATMEL_LCDC_DMABADDR1 0x00 | 48 | #define ATMEL_LCDC_DMABADDR1 0x00 |
