From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/8] video: atmel_lcdfb: fix platform data struct
Date: Tue, 16 Apr 2013 12:33:51 +0000 [thread overview]
Message-ID: <516D452F.2000109@atmel.com> (raw)
In-Reply-To: <1365692422-9565-1-git-send-email-plagnioj@jcrosoft.com>
On 04/11/2013 05:00 PM, Jean-Christophe PLAGNIOL-VILLARD :
> 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>
> Cc: linux-fbdev@vger.kernel.org
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
> ---
> arch/arm/mach-at91/at91sam9261_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9263_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9g45_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9rl_devices.c | 6 +-
> arch/arm/mach-at91/board-sam9261ek.c | 6 +-
> arch/arm/mach-at91/board-sam9263ek.c | 4 +-
> arch/arm/mach-at91/board-sam9m10g45ek.c | 4 +-
> arch/arm/mach-at91/board-sam9rlek.c | 4 +-
> arch/arm/mach-at91/board.h | 4 +-
> arch/avr32/boards/atngw100/evklcd10x.c | 6 +-
> arch/avr32/boards/atngw100/mrmt.c | 4 +-
> arch/avr32/boards/atstk1000/atstk1000.h | 2 +-
> arch/avr32/boards/atstk1000/setup.c | 2 +-
> arch/avr32/boards/favr-32/setup.c | 2 +-
> arch/avr32/boards/hammerhead/setup.c | 2 +-
> arch/avr32/boards/merisc/display.c | 2 +-
> arch/avr32/boards/mimc200/setup.c | 4 +-
> arch/avr32/mach-at32ap/at32ap700x.c | 8 +--
> arch/avr32/mach-at32ap/include/mach/board.h | 4 +-
> drivers/video/atmel_lcdfb.c | 104 +++++++++++++++++----------
> include/video/atmel_lcdc.h | 24 +------
> 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 629ea5f..b2a3474 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)
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data) {
> return;
> @@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
> index 858c8aa..4aeaddd 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) {}
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data)
> return;
> @@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index fe626d4..82636c7 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,
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data)
> return;
> @@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c
> index 352468f..a698bda 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) {}
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data) {
> return;
> @@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index b446645..c819e29 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -405,7 +405,7 @@ static void at91_lcdc_stn_power_control(int on)
> }
> }
>
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .default_bpp = 1,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2,
> @@ -460,7 +460,7 @@ static void at91_lcdc_tft_power_control(int on)
> at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */
> }
>
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -475,7 +475,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> #endif
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index 3284df0..0fdae3f 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)
> }
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -292,7 +292,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index 2a94896..ef39078 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 = {
> | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 32,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -295,7 +295,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index aa265dc..b77d7a9 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)
> }
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -191,7 +191,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board.h b/arch/arm/mach-at91/board.h
> index 4a234fb..6c08b34 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);
> extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
>
> /* LCD Controller */
> -struct atmel_lcdfb_info;
> -extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
> +struct atmel_lcdfb_pdata;
> +extern void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data);
>
> /* AC97 */
> 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 2038875..dc42804 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 = {
> .dclkmax = 28330000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -96,7 +96,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
> .dclkmax = 7000000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -134,7 +134,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
> .dclkmax = 6400000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/atngw100/mrmt.c b/arch/avr32/boards/atngw100/mrmt.c
> index f914319..ccc9599 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 = {
> .dclkmax = 9260000,
> };
>
> -static struct atmel_lcdfb_info __initdata rmt_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -126,7 +126,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = {
> .dclkmax = 9260000,
> };
>
> -static struct atmel_lcdfb_info __initdata rmt_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/atstk1000/atstk1000.h b/arch/avr32/boards/atstk1000/atstk1000.h
> index 9392d32..653cc09 100644
> --- a/arch/avr32/boards/atstk1000/atstk1000.h
> +++ b/arch/avr32/boards/atstk1000/atstk1000.h
> @@ -10,7 +10,7 @@
> #ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
> #define __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
>
> -extern struct atmel_lcdfb_info atstk1000_lcdc_data;
> +extern struct atmel_lcdfb_pdata atstk1000_lcdc_data;
>
> void atstk1000_setup_j2_leds(void);
>
> diff --git a/arch/avr32/boards/atstk1000/setup.c b/arch/avr32/boards/atstk1000/setup.c
> index 2d6b560..b6b88f5 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 = {
> .dclkmax = 30000000,
> };
>
> -struct atmel_lcdfb_info __initdata atstk1000_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata atstk1000_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .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 27bd6fb..7b1f2cd 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 = {
> .dclkmax = 28000000,
> };
>
> -struct atmel_lcdfb_info __initdata favr32_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata favr32_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/hammerhead/setup.c b/arch/avr32/boards/hammerhead/setup.c
> index 9d1efd1..dc0e317 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 = {
> .dclkmax = 10000000,
> };
>
> -struct atmel_lcdfb_info __initdata hammerhead_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata hammerhead_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/merisc/display.c b/arch/avr32/boards/merisc/display.c
> index 85a543c..e7683ee 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 = {
> .dclkmax = 30000000,
> };
>
> -struct atmel_lcdfb_info merisc_lcdc_data = {
> +struct atmel_lcdfb_pdata merisc_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/mimc200/setup.c b/arch/avr32/boards/mimc200/setup.c
> index 05358aa..1cb8e9c 100644
> --- a/arch/avr32/boards/mimc200/setup.c
> +++ b/arch/avr32/boards/mimc200/setup.c
> @@ -8,7 +8,7 @@
> * published by the Free Software Foundation.
> */
>
> -extern struct atmel_lcdfb_info mimc200_lcdc_data;
> +extern struct atmel_lcdfb_pdata mimc200_lcdc_data;
>
> #include <linux/clk.h>
> #include <linux/etherdevice.h>
> @@ -71,7 +71,7 @@ static struct fb_monspecs __initdata mimc200_default_monspecs = {
> .dclkmax = 25200000,
> };
>
> -struct atmel_lcdfb_info __initdata mimc200_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata mimc200_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
> index 7c2f668..0badb05 100644
> --- a/arch/avr32/mach-at32ap/at32ap700x.c
> +++ b/arch/avr32/mach-at32ap/at32ap700x.c
> @@ -1437,7 +1437,7 @@ fail:
> * LCDC
> * -------------------------------------------------------------------- */
> #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
> -static struct atmel_lcdfb_info atmel_lcdfb0_data;
> +static struct atmel_lcdfb_pdata atmel_lcdfb0_data;
> static struct resource atmel_lcdfb0_resource[] = {
> {
> .start = 0xff000000,
> @@ -1465,12 +1465,12 @@ static struct clk atmel_lcdfb0_pixclk = {
> };
>
> struct platform_device *__init
> -at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> +at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data,
> unsigned long fbmem_start, unsigned long fbmem_len,
> u64 pin_mask)
> {
> struct platform_device *pdev;
> - struct atmel_lcdfb_info *info;
> + struct atmel_lcdfb_pdata *info;
> struct fb_monspecs *monspecs;
> struct fb_videomode *modedb;
> unsigned int modedb_size;
> @@ -1527,7 +1527,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> }
>
> info = pdev->dev.platform_data;
> - memcpy(info, data, sizeof(struct atmel_lcdfb_info));
> + memcpy(info, data, sizeof(struct atmel_lcdfb_pdata));
> info->default_monspecs = monspecs;
>
> 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 d485b03..f1a316d 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 *
> at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n);
> void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n);
>
> -struct atmel_lcdfb_info;
> +struct atmel_lcdfb_pdata;
> struct platform_device *
> -at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> +at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data,
> unsigned long fbmem_start, unsigned long fbmem_len,
> u64 pin_mask);
>
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index c1a2914..98733cd4 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -20,12 +20,45 @@
> #include <linux/gfp.h>
> #include <linux/module.h>
> #include <linux/platform_data/atmel.h>
> +#include <video/of_display_timing.h>
I am not sure this one is useful for this patch, maybe place it in the
4/8 one.
> #include <mach/cpu.h>
> #include <asm/gpio.h>
>
> #include <video/atmel_lcdc.h>
>
> +struct atmel_lcdfb_config {
> + bool have_alt_pixclock;
> + bool have_hozval;
> + bool have_intensity_bit;
> +};
> +
> + /* LCD Controller info data structure, stored in device platform_data */
Is comment still relevant?
> +struct atmel_lcdfb_info {
> + spinlock_t lock;
> + struct fb_info *info;
> + void __iomem *mmio;
> + int irq_base;
> + struct work_struct task;
> +
> + unsigned int smem_len;
> + struct platform_device *pdev;
> + struct clk *bus_clk;
> + struct clk *lcdc_clk;
> +
> + struct backlight_device *backlight;
> + u8 bl_power;
> + bool lcdcon_pol_negative;
> + u8 saved_lcdcon;
> +
> + u32 pseudo_palette[16];
> + bool have_intensity_bit;
> +
> + struct atmel_lcdfb_pdata pdata;
> +
> + struct atmel_lcdfb_config *config;
> +};
> +
> #define lcdc_readl(sinfo, reg) __raw_readl((sinfo)->mmio+(reg))
> #define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg))
>
> @@ -34,12 +67,6 @@
> #define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */
> #define ATMEL_LCDC_FIFO_SIZE 512 /* words */
>
> -struct atmel_lcdfb_config {
> - bool have_alt_pixclock;
> - bool have_hozval;
> - bool have_intensity_bit;
> -};
> -
> static struct atmel_lcdfb_config at91sam9261_config = {
> .have_hozval = true,
> .have_intensity_bit = true,
> @@ -242,6 +269,8 @@ static void exit_backlight(struct atmel_lcdfb_info *sinfo)
>
> static void init_contrast(struct atmel_lcdfb_info *sinfo)
> {
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> /* contrast pwm can be 'inverted' */
> if (sinfo->lcdcon_pol_negative)
> contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE);
> @@ -250,7 +279,7 @@ static void init_contrast(struct atmel_lcdfb_info *sinfo)
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT);
>
> - if (sinfo->lcdcon_is_backlight)
> + if (pdata->lcdcon_is_backlight)
> init_backlight(sinfo);
> }
>
> @@ -293,9 +322,11 @@ static unsigned long compute_hozval(struct atmel_lcdfb_info *sinfo,
>
> static void atmel_lcdfb_stop_nowait(struct atmel_lcdfb_info *sinfo)
> {
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> /* Turn off the LCD controller and the DMA controller */
> lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
> - sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET);
> + pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET);
>
> /* Wait for the LCDC core to become idle */
> while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY)
> @@ -315,9 +346,11 @@ static void atmel_lcdfb_stop(struct atmel_lcdfb_info *sinfo)
>
> static void atmel_lcdfb_start(struct atmel_lcdfb_info *sinfo)
> {
> - lcdc_writel(sinfo, ATMEL_LCDC_DMACON, sinfo->default_dmacon);
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> + lcdc_writel(sinfo, ATMEL_LCDC_DMACON, pdata->default_dmacon);
> lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
> - (sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
> + (pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
> | ATMEL_LCDC_PWR);
> }
>
> @@ -418,6 +451,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> {
> struct device *dev = info->device;
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned long clk_value_khz;
>
> clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000;
> @@ -501,7 +535,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> else
> var->green.length = 6;
>
> - if (sinfo->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB) {
> /* RGB:5X5 mode */
> var->red.offset = var->green.length + 5;
> var->blue.offset = 0;
> @@ -518,7 +552,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> var->transp.length = 8;
> /* fall through */
> case 24:
> - if (sinfo->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB) {
> /* RGB:888 mode */
> var->red.offset = 16;
> var->blue.offset = 0;
> @@ -567,6 +601,7 @@ static void atmel_lcdfb_reset(struct atmel_lcdfb_info *sinfo)
> static int atmel_lcdfb_set_par(struct fb_info *info)
> {
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned long hozval_linesz;
> unsigned long value;
> unsigned long clk_value_khz;
> @@ -628,7 +663,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
>
>
> /* Initialize control register 2 */
> - value = sinfo->default_lcdcon2;
> + value = pdata->default_lcdcon2;
>
> if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
> value |= ATMEL_LCDC_INVLINE_INVERTED;
> @@ -732,6 +767,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
> unsigned int transp, struct fb_info *info)
> {
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned int val;
> u32 *pal;
> int ret = 1;
> @@ -768,8 +804,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
> */
> } else {
> /* new style BGR:565 / RGB:565 */
> - if (sinfo->lcd_wiring_mode =
> - ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB) {
> val = ((blue >> 11) & 0x001f);
> val |= ((red >> 0) & 0xf800);
> } else {
> @@ -909,7 +944,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct fb_info *info;
> struct atmel_lcdfb_info *sinfo;
> - struct atmel_lcdfb_info *pdata_sinfo;
> + struct atmel_lcdfb_pdata *pdata;
> struct fb_videomode fbmode;
> struct resource *regs = NULL;
> struct resource *map = NULL;
> @@ -927,17 +962,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> sinfo = info->par;
>
> if (dev->platform_data) {
> - pdata_sinfo = (struct atmel_lcdfb_info *)dev->platform_data;
> - sinfo->default_bpp = pdata_sinfo->default_bpp;
> - sinfo->default_dmacon = pdata_sinfo->default_dmacon;
> - sinfo->default_lcdcon2 = pdata_sinfo->default_lcdcon2;
> - sinfo->default_monspecs = pdata_sinfo->default_monspecs;
> - sinfo->atmel_lcdfb_power_control = pdata_sinfo->atmel_lcdfb_power_control;
> - sinfo->guard_time = pdata_sinfo->guard_time;
> - sinfo->smem_len = pdata_sinfo->smem_len;
> - sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight;
> - sinfo->lcdcon_pol_negative = pdata_sinfo->lcdcon_pol_negative;
> - sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode;
> + pdata = (struct atmel_lcdfb_pdata *)dev->platform_data;
> + sinfo->pdata = *pdata;
> } else {
> dev_err(dev, "cannot get default configuration\n");
> goto free_info;
> @@ -953,7 +979,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> info->pseudo_palette = sinfo->pseudo_palette;
> info->fbops = &atmel_lcdfb_ops;
>
> - memcpy(&info->monspecs, sinfo->default_monspecs, sizeof(info->monspecs));
> + memcpy(&info->monspecs, pdata->default_monspecs, sizeof(info->monspecs));
> info->fix = atmel_lcdfb_fix;
>
> /* Enable LCDC Clocks */
> @@ -971,7 +997,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
>
> ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb,
> info->monspecs.modedb_len, info->monspecs.modedb,
> - sinfo->default_bpp);
> + pdata->default_bpp);
> if (!ret) {
> dev_err(dev, "no suitable video mode found\n");
> goto stop_clk;
> @@ -1088,8 +1114,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> fb_add_videomode(&fbmode, &info->modelist);
>
> /* Power up the LCDC screen */
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(1);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(1);
>
> dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n",
> info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base);
> @@ -1134,15 +1160,17 @@ static int __exit atmel_lcdfb_remove(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct fb_info *info = dev_get_drvdata(dev);
> struct atmel_lcdfb_info *sinfo;
> + struct atmel_lcdfb_pdata *pdata;
>
> if (!info || !info->par)
> return 0;
> sinfo = info->par;
> + pdata = &sinfo->pdata;
>
> cancel_work_sync(&sinfo->task);
> exit_backlight(sinfo);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(0);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(0);
> unregister_framebuffer(info);
> atmel_lcdfb_stop_clock(sinfo);
> clk_put(sinfo->lcdc_clk);
> @@ -1170,6 +1198,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
> {
> struct fb_info *info = platform_get_drvdata(pdev);
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
>
> /*
> * We don't want to handle interrupts while the clock is
> @@ -1179,8 +1208,8 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
>
> sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(0);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(0);
>
> atmel_lcdfb_stop(sinfo);
> atmel_lcdfb_stop_clock(sinfo);
> @@ -1192,11 +1221,12 @@ static int atmel_lcdfb_resume(struct platform_device *pdev)
> {
> struct fb_info *info = platform_get_drvdata(pdev);
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
>
> atmel_lcdfb_start_clock(sinfo);
> atmel_lcdfb_start(sinfo);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(1);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(1);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon);
>
> /* Enable FIFO & DMA errors */
> diff --git a/include/video/atmel_lcdc.h b/include/video/atmel_lcdc.h
> index 0f5a2fc..2eb601c 100644
> --- a/include/video/atmel_lcdc.h
> +++ b/include/video/atmel_lcdc.h
> @@ -31,39 +31,17 @@
> #define ATMEL_LCDC_WIRING_BGR 0
> #define ATMEL_LCDC_WIRING_RGB 1
>
> -struct atmel_lcdfb_config;
>
> /* LCD Controller info data structure, stored in device platform_data */
Wrong comment: it is not the "info" data structure, this time.
> -struct atmel_lcdfb_info {
> - spinlock_t lock;
> - struct fb_info *info;
> - void __iomem *mmio;
> - int irq_base;
> - struct work_struct task;
> -
> +struct atmel_lcdfb_pdata {
> unsigned int guard_time;
> - unsigned int smem_len;
> - struct platform_device *pdev;
> - struct clk *bus_clk;
> - struct clk *lcdc_clk;
> -
> -#ifdef CONFIG_BACKLIGHT_ATMEL_LCDC
> - struct backlight_device *backlight;
> - u8 bl_power;
> -#endif
> bool lcdcon_is_backlight;
> - bool lcdcon_pol_negative;
> - u8 saved_lcdcon;
> -
> u8 default_bpp;
> u8 lcd_wiring_mode;
> unsigned int default_lcdcon2;
> unsigned int default_dmacon;
> void (*atmel_lcdfb_power_control)(int on);
> struct fb_monspecs *default_monspecs;
> - u32 pseudo_palette[16];
> -
> - struct atmel_lcdfb_config *config;
> };
>
> #define ATMEL_LCDC_DMABADDR1 0x00
>
--
Nicolas Ferre
WARNING: multiple messages have this Message-ID (diff)
From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/8] video: atmel_lcdfb: fix platform data struct
Date: Tue, 16 Apr 2013 14:33:51 +0200 [thread overview]
Message-ID: <516D452F.2000109@atmel.com> (raw)
In-Reply-To: <1365692422-9565-1-git-send-email-plagnioj@jcrosoft.com>
On 04/11/2013 05:00 PM, Jean-Christophe PLAGNIOL-VILLARD :
> 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>
> Cc: linux-fbdev at vger.kernel.org
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
> ---
> arch/arm/mach-at91/at91sam9261_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9263_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9g45_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9rl_devices.c | 6 +-
> arch/arm/mach-at91/board-sam9261ek.c | 6 +-
> arch/arm/mach-at91/board-sam9263ek.c | 4 +-
> arch/arm/mach-at91/board-sam9m10g45ek.c | 4 +-
> arch/arm/mach-at91/board-sam9rlek.c | 4 +-
> arch/arm/mach-at91/board.h | 4 +-
> arch/avr32/boards/atngw100/evklcd10x.c | 6 +-
> arch/avr32/boards/atngw100/mrmt.c | 4 +-
> arch/avr32/boards/atstk1000/atstk1000.h | 2 +-
> arch/avr32/boards/atstk1000/setup.c | 2 +-
> arch/avr32/boards/favr-32/setup.c | 2 +-
> arch/avr32/boards/hammerhead/setup.c | 2 +-
> arch/avr32/boards/merisc/display.c | 2 +-
> arch/avr32/boards/mimc200/setup.c | 4 +-
> arch/avr32/mach-at32ap/at32ap700x.c | 8 +--
> arch/avr32/mach-at32ap/include/mach/board.h | 4 +-
> drivers/video/atmel_lcdfb.c | 104 +++++++++++++++++----------
> include/video/atmel_lcdc.h | 24 +------
> 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 629ea5f..b2a3474 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)
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data) {
> return;
> @@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
> index 858c8aa..4aeaddd 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) {}
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data)
> return;
> @@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index fe626d4..82636c7 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,
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data)
> return;
> @@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c
> index 352468f..a698bda 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) {}
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data) {
> return;
> @@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index b446645..c819e29 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -405,7 +405,7 @@ static void at91_lcdc_stn_power_control(int on)
> }
> }
>
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .default_bpp = 1,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2,
> @@ -460,7 +460,7 @@ static void at91_lcdc_tft_power_control(int on)
> at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */
> }
>
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -475,7 +475,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> #endif
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index 3284df0..0fdae3f 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)
> }
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -292,7 +292,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index 2a94896..ef39078 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 = {
> | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 32,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -295,7 +295,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index aa265dc..b77d7a9 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)
> }
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -191,7 +191,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board.h b/arch/arm/mach-at91/board.h
> index 4a234fb..6c08b34 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);
> extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
>
> /* LCD Controller */
> -struct atmel_lcdfb_info;
> -extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
> +struct atmel_lcdfb_pdata;
> +extern void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data);
>
> /* AC97 */
> 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 2038875..dc42804 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 = {
> .dclkmax = 28330000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -96,7 +96,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
> .dclkmax = 7000000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -134,7 +134,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
> .dclkmax = 6400000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/atngw100/mrmt.c b/arch/avr32/boards/atngw100/mrmt.c
> index f914319..ccc9599 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 = {
> .dclkmax = 9260000,
> };
>
> -static struct atmel_lcdfb_info __initdata rmt_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -126,7 +126,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = {
> .dclkmax = 9260000,
> };
>
> -static struct atmel_lcdfb_info __initdata rmt_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/atstk1000/atstk1000.h b/arch/avr32/boards/atstk1000/atstk1000.h
> index 9392d32..653cc09 100644
> --- a/arch/avr32/boards/atstk1000/atstk1000.h
> +++ b/arch/avr32/boards/atstk1000/atstk1000.h
> @@ -10,7 +10,7 @@
> #ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
> #define __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
>
> -extern struct atmel_lcdfb_info atstk1000_lcdc_data;
> +extern struct atmel_lcdfb_pdata atstk1000_lcdc_data;
>
> void atstk1000_setup_j2_leds(void);
>
> diff --git a/arch/avr32/boards/atstk1000/setup.c b/arch/avr32/boards/atstk1000/setup.c
> index 2d6b560..b6b88f5 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 = {
> .dclkmax = 30000000,
> };
>
> -struct atmel_lcdfb_info __initdata atstk1000_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata atstk1000_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .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 27bd6fb..7b1f2cd 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 = {
> .dclkmax = 28000000,
> };
>
> -struct atmel_lcdfb_info __initdata favr32_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata favr32_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/hammerhead/setup.c b/arch/avr32/boards/hammerhead/setup.c
> index 9d1efd1..dc0e317 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 = {
> .dclkmax = 10000000,
> };
>
> -struct atmel_lcdfb_info __initdata hammerhead_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata hammerhead_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/merisc/display.c b/arch/avr32/boards/merisc/display.c
> index 85a543c..e7683ee 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 = {
> .dclkmax = 30000000,
> };
>
> -struct atmel_lcdfb_info merisc_lcdc_data = {
> +struct atmel_lcdfb_pdata merisc_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/mimc200/setup.c b/arch/avr32/boards/mimc200/setup.c
> index 05358aa..1cb8e9c 100644
> --- a/arch/avr32/boards/mimc200/setup.c
> +++ b/arch/avr32/boards/mimc200/setup.c
> @@ -8,7 +8,7 @@
> * published by the Free Software Foundation.
> */
>
> -extern struct atmel_lcdfb_info mimc200_lcdc_data;
> +extern struct atmel_lcdfb_pdata mimc200_lcdc_data;
>
> #include <linux/clk.h>
> #include <linux/etherdevice.h>
> @@ -71,7 +71,7 @@ static struct fb_monspecs __initdata mimc200_default_monspecs = {
> .dclkmax = 25200000,
> };
>
> -struct atmel_lcdfb_info __initdata mimc200_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata mimc200_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
> index 7c2f668..0badb05 100644
> --- a/arch/avr32/mach-at32ap/at32ap700x.c
> +++ b/arch/avr32/mach-at32ap/at32ap700x.c
> @@ -1437,7 +1437,7 @@ fail:
> * LCDC
> * -------------------------------------------------------------------- */
> #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
> -static struct atmel_lcdfb_info atmel_lcdfb0_data;
> +static struct atmel_lcdfb_pdata atmel_lcdfb0_data;
> static struct resource atmel_lcdfb0_resource[] = {
> {
> .start = 0xff000000,
> @@ -1465,12 +1465,12 @@ static struct clk atmel_lcdfb0_pixclk = {
> };
>
> struct platform_device *__init
> -at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> +at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data,
> unsigned long fbmem_start, unsigned long fbmem_len,
> u64 pin_mask)
> {
> struct platform_device *pdev;
> - struct atmel_lcdfb_info *info;
> + struct atmel_lcdfb_pdata *info;
> struct fb_monspecs *monspecs;
> struct fb_videomode *modedb;
> unsigned int modedb_size;
> @@ -1527,7 +1527,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> }
>
> info = pdev->dev.platform_data;
> - memcpy(info, data, sizeof(struct atmel_lcdfb_info));
> + memcpy(info, data, sizeof(struct atmel_lcdfb_pdata));
> info->default_monspecs = monspecs;
>
> 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 d485b03..f1a316d 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 *
> at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n);
> void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n);
>
> -struct atmel_lcdfb_info;
> +struct atmel_lcdfb_pdata;
> struct platform_device *
> -at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> +at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data,
> unsigned long fbmem_start, unsigned long fbmem_len,
> u64 pin_mask);
>
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index c1a2914..98733cd4 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -20,12 +20,45 @@
> #include <linux/gfp.h>
> #include <linux/module.h>
> #include <linux/platform_data/atmel.h>
> +#include <video/of_display_timing.h>
I am not sure this one is useful for this patch, maybe place it in the
4/8 one.
> #include <mach/cpu.h>
> #include <asm/gpio.h>
>
> #include <video/atmel_lcdc.h>
>
> +struct atmel_lcdfb_config {
> + bool have_alt_pixclock;
> + bool have_hozval;
> + bool have_intensity_bit;
> +};
> +
> + /* LCD Controller info data structure, stored in device platform_data */
Is comment still relevant?
> +struct atmel_lcdfb_info {
> + spinlock_t lock;
> + struct fb_info *info;
> + void __iomem *mmio;
> + int irq_base;
> + struct work_struct task;
> +
> + unsigned int smem_len;
> + struct platform_device *pdev;
> + struct clk *bus_clk;
> + struct clk *lcdc_clk;
> +
> + struct backlight_device *backlight;
> + u8 bl_power;
> + bool lcdcon_pol_negative;
> + u8 saved_lcdcon;
> +
> + u32 pseudo_palette[16];
> + bool have_intensity_bit;
> +
> + struct atmel_lcdfb_pdata pdata;
> +
> + struct atmel_lcdfb_config *config;
> +};
> +
> #define lcdc_readl(sinfo, reg) __raw_readl((sinfo)->mmio+(reg))
> #define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg))
>
> @@ -34,12 +67,6 @@
> #define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */
> #define ATMEL_LCDC_FIFO_SIZE 512 /* words */
>
> -struct atmel_lcdfb_config {
> - bool have_alt_pixclock;
> - bool have_hozval;
> - bool have_intensity_bit;
> -};
> -
> static struct atmel_lcdfb_config at91sam9261_config = {
> .have_hozval = true,
> .have_intensity_bit = true,
> @@ -242,6 +269,8 @@ static void exit_backlight(struct atmel_lcdfb_info *sinfo)
>
> static void init_contrast(struct atmel_lcdfb_info *sinfo)
> {
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> /* contrast pwm can be 'inverted' */
> if (sinfo->lcdcon_pol_negative)
> contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE);
> @@ -250,7 +279,7 @@ static void init_contrast(struct atmel_lcdfb_info *sinfo)
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT);
>
> - if (sinfo->lcdcon_is_backlight)
> + if (pdata->lcdcon_is_backlight)
> init_backlight(sinfo);
> }
>
> @@ -293,9 +322,11 @@ static unsigned long compute_hozval(struct atmel_lcdfb_info *sinfo,
>
> static void atmel_lcdfb_stop_nowait(struct atmel_lcdfb_info *sinfo)
> {
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> /* Turn off the LCD controller and the DMA controller */
> lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
> - sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET);
> + pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET);
>
> /* Wait for the LCDC core to become idle */
> while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY)
> @@ -315,9 +346,11 @@ static void atmel_lcdfb_stop(struct atmel_lcdfb_info *sinfo)
>
> static void atmel_lcdfb_start(struct atmel_lcdfb_info *sinfo)
> {
> - lcdc_writel(sinfo, ATMEL_LCDC_DMACON, sinfo->default_dmacon);
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> + lcdc_writel(sinfo, ATMEL_LCDC_DMACON, pdata->default_dmacon);
> lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
> - (sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
> + (pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
> | ATMEL_LCDC_PWR);
> }
>
> @@ -418,6 +451,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> {
> struct device *dev = info->device;
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned long clk_value_khz;
>
> clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000;
> @@ -501,7 +535,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> else
> var->green.length = 6;
>
> - if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> /* RGB:5X5 mode */
> var->red.offset = var->green.length + 5;
> var->blue.offset = 0;
> @@ -518,7 +552,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> var->transp.length = 8;
> /* fall through */
> case 24:
> - if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> /* RGB:888 mode */
> var->red.offset = 16;
> var->blue.offset = 0;
> @@ -567,6 +601,7 @@ static void atmel_lcdfb_reset(struct atmel_lcdfb_info *sinfo)
> static int atmel_lcdfb_set_par(struct fb_info *info)
> {
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned long hozval_linesz;
> unsigned long value;
> unsigned long clk_value_khz;
> @@ -628,7 +663,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
>
>
> /* Initialize control register 2 */
> - value = sinfo->default_lcdcon2;
> + value = pdata->default_lcdcon2;
>
> if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
> value |= ATMEL_LCDC_INVLINE_INVERTED;
> @@ -732,6 +767,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
> unsigned int transp, struct fb_info *info)
> {
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned int val;
> u32 *pal;
> int ret = 1;
> @@ -768,8 +804,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
> */
> } else {
> /* new style BGR:565 / RGB:565 */
> - if (sinfo->lcd_wiring_mode ==
> - ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> val = ((blue >> 11) & 0x001f);
> val |= ((red >> 0) & 0xf800);
> } else {
> @@ -909,7 +944,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct fb_info *info;
> struct atmel_lcdfb_info *sinfo;
> - struct atmel_lcdfb_info *pdata_sinfo;
> + struct atmel_lcdfb_pdata *pdata;
> struct fb_videomode fbmode;
> struct resource *regs = NULL;
> struct resource *map = NULL;
> @@ -927,17 +962,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> sinfo = info->par;
>
> if (dev->platform_data) {
> - pdata_sinfo = (struct atmel_lcdfb_info *)dev->platform_data;
> - sinfo->default_bpp = pdata_sinfo->default_bpp;
> - sinfo->default_dmacon = pdata_sinfo->default_dmacon;
> - sinfo->default_lcdcon2 = pdata_sinfo->default_lcdcon2;
> - sinfo->default_monspecs = pdata_sinfo->default_monspecs;
> - sinfo->atmel_lcdfb_power_control = pdata_sinfo->atmel_lcdfb_power_control;
> - sinfo->guard_time = pdata_sinfo->guard_time;
> - sinfo->smem_len = pdata_sinfo->smem_len;
> - sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight;
> - sinfo->lcdcon_pol_negative = pdata_sinfo->lcdcon_pol_negative;
> - sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode;
> + pdata = (struct atmel_lcdfb_pdata *)dev->platform_data;
> + sinfo->pdata = *pdata;
> } else {
> dev_err(dev, "cannot get default configuration\n");
> goto free_info;
> @@ -953,7 +979,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> info->pseudo_palette = sinfo->pseudo_palette;
> info->fbops = &atmel_lcdfb_ops;
>
> - memcpy(&info->monspecs, sinfo->default_monspecs, sizeof(info->monspecs));
> + memcpy(&info->monspecs, pdata->default_monspecs, sizeof(info->monspecs));
> info->fix = atmel_lcdfb_fix;
>
> /* Enable LCDC Clocks */
> @@ -971,7 +997,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
>
> ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb,
> info->monspecs.modedb_len, info->monspecs.modedb,
> - sinfo->default_bpp);
> + pdata->default_bpp);
> if (!ret) {
> dev_err(dev, "no suitable video mode found\n");
> goto stop_clk;
> @@ -1088,8 +1114,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> fb_add_videomode(&fbmode, &info->modelist);
>
> /* Power up the LCDC screen */
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(1);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(1);
>
> dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n",
> info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base);
> @@ -1134,15 +1160,17 @@ static int __exit atmel_lcdfb_remove(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct fb_info *info = dev_get_drvdata(dev);
> struct atmel_lcdfb_info *sinfo;
> + struct atmel_lcdfb_pdata *pdata;
>
> if (!info || !info->par)
> return 0;
> sinfo = info->par;
> + pdata = &sinfo->pdata;
>
> cancel_work_sync(&sinfo->task);
> exit_backlight(sinfo);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(0);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(0);
> unregister_framebuffer(info);
> atmel_lcdfb_stop_clock(sinfo);
> clk_put(sinfo->lcdc_clk);
> @@ -1170,6 +1198,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
> {
> struct fb_info *info = platform_get_drvdata(pdev);
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
>
> /*
> * We don't want to handle interrupts while the clock is
> @@ -1179,8 +1208,8 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
>
> sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(0);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(0);
>
> atmel_lcdfb_stop(sinfo);
> atmel_lcdfb_stop_clock(sinfo);
> @@ -1192,11 +1221,12 @@ static int atmel_lcdfb_resume(struct platform_device *pdev)
> {
> struct fb_info *info = platform_get_drvdata(pdev);
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
>
> atmel_lcdfb_start_clock(sinfo);
> atmel_lcdfb_start(sinfo);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(1);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(1);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon);
>
> /* Enable FIFO & DMA errors */
> diff --git a/include/video/atmel_lcdc.h b/include/video/atmel_lcdc.h
> index 0f5a2fc..2eb601c 100644
> --- a/include/video/atmel_lcdc.h
> +++ b/include/video/atmel_lcdc.h
> @@ -31,39 +31,17 @@
> #define ATMEL_LCDC_WIRING_BGR 0
> #define ATMEL_LCDC_WIRING_RGB 1
>
> -struct atmel_lcdfb_config;
>
> /* LCD Controller info data structure, stored in device platform_data */
Wrong comment: it is not the "info" data structure, this time.
> -struct atmel_lcdfb_info {
> - spinlock_t lock;
> - struct fb_info *info;
> - void __iomem *mmio;
> - int irq_base;
> - struct work_struct task;
> -
> +struct atmel_lcdfb_pdata {
> unsigned int guard_time;
> - unsigned int smem_len;
> - struct platform_device *pdev;
> - struct clk *bus_clk;
> - struct clk *lcdc_clk;
> -
> -#ifdef CONFIG_BACKLIGHT_ATMEL_LCDC
> - struct backlight_device *backlight;
> - u8 bl_power;
> -#endif
> bool lcdcon_is_backlight;
> - bool lcdcon_pol_negative;
> - u8 saved_lcdcon;
> -
> u8 default_bpp;
> u8 lcd_wiring_mode;
> unsigned int default_lcdcon2;
> unsigned int default_dmacon;
> void (*atmel_lcdfb_power_control)(int on);
> struct fb_monspecs *default_monspecs;
> - u32 pseudo_palette[16];
> -
> - struct atmel_lcdfb_config *config;
> };
>
> #define ATMEL_LCDC_DMABADDR1 0x00
>
--
Nicolas Ferre
WARNING: multiple messages have this Message-ID (diff)
From: Nicolas Ferre <nicolas.ferre@atmel.com>
To: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
devicetree-discuss@lists.ozlabs.org, linux-fbdev@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Hans-Christian Egtvedt <egtvedt@samfundet.no>
Subject: Re: [PATCH 1/8] video: atmel_lcdfb: fix platform data struct
Date: Tue, 16 Apr 2013 14:33:51 +0200 [thread overview]
Message-ID: <516D452F.2000109@atmel.com> (raw)
In-Reply-To: <1365692422-9565-1-git-send-email-plagnioj@jcrosoft.com>
On 04/11/2013 05:00 PM, Jean-Christophe PLAGNIOL-VILLARD :
> 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>
> Cc: linux-fbdev@vger.kernel.org
> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
> ---
> arch/arm/mach-at91/at91sam9261_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9263_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9g45_devices.c | 6 +-
> arch/arm/mach-at91/at91sam9rl_devices.c | 6 +-
> arch/arm/mach-at91/board-sam9261ek.c | 6 +-
> arch/arm/mach-at91/board-sam9263ek.c | 4 +-
> arch/arm/mach-at91/board-sam9m10g45ek.c | 4 +-
> arch/arm/mach-at91/board-sam9rlek.c | 4 +-
> arch/arm/mach-at91/board.h | 4 +-
> arch/avr32/boards/atngw100/evklcd10x.c | 6 +-
> arch/avr32/boards/atngw100/mrmt.c | 4 +-
> arch/avr32/boards/atstk1000/atstk1000.h | 2 +-
> arch/avr32/boards/atstk1000/setup.c | 2 +-
> arch/avr32/boards/favr-32/setup.c | 2 +-
> arch/avr32/boards/hammerhead/setup.c | 2 +-
> arch/avr32/boards/merisc/display.c | 2 +-
> arch/avr32/boards/mimc200/setup.c | 4 +-
> arch/avr32/mach-at32ap/at32ap700x.c | 8 +--
> arch/avr32/mach-at32ap/include/mach/board.h | 4 +-
> drivers/video/atmel_lcdfb.c | 104 +++++++++++++++++----------
> include/video/atmel_lcdc.h | 24 +------
> 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 629ea5f..b2a3474 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)
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data) {
> return;
> @@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
> index 858c8aa..4aeaddd 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) {}
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data)
> return;
> @@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
> index fe626d4..82636c7 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,
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data)
> return;
> @@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c
> index 352468f..a698bda 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) {}
>
> #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
> static u64 lcdc_dmamask = DMA_BIT_MASK(32);
> -static struct atmel_lcdfb_info lcdc_data;
> +static struct atmel_lcdfb_pdata lcdc_data;
>
> static struct resource lcdc_resources[] = {
> [0] = {
> @@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = {
> .num_resources = ARRAY_SIZE(lcdc_resources),
> };
>
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data)
> {
> if (!data) {
> return;
> @@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
> platform_device_register(&at91_lcdc_device);
> }
> #else
> -void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {}
> +void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index b446645..c819e29 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -405,7 +405,7 @@ static void at91_lcdc_stn_power_control(int on)
> }
> }
>
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .default_bpp = 1,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2,
> @@ -460,7 +460,7 @@ static void at91_lcdc_tft_power_control(int on)
> at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */
> }
>
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -475,7 +475,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> #endif
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index 3284df0..0fdae3f 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)
> }
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -292,7 +292,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index 2a94896..ef39078 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 = {
> | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 32,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -295,7 +295,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index aa265dc..b77d7a9 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)
> }
>
> /* Driver datas */
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
> .lcdcon_is_backlight = true,
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN,
> @@ -191,7 +191,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
> };
>
> #else
> -static struct atmel_lcdfb_info __initdata ek_lcdc_data;
> +static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
> #endif
>
>
> diff --git a/arch/arm/mach-at91/board.h b/arch/arm/mach-at91/board.h
> index 4a234fb..6c08b34 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);
> extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
>
> /* LCD Controller */
> -struct atmel_lcdfb_info;
> -extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data);
> +struct atmel_lcdfb_pdata;
> +extern void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data);
>
> /* AC97 */
> 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 2038875..dc42804 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 = {
> .dclkmax = 28330000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -96,7 +96,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
> .dclkmax = 7000000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -134,7 +134,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
> .dclkmax = 6400000,
> };
>
> -static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/atngw100/mrmt.c b/arch/avr32/boards/atngw100/mrmt.c
> index f914319..ccc9599 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 = {
> .dclkmax = 9260000,
> };
>
> -static struct atmel_lcdfb_info __initdata rmt_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> @@ -126,7 +126,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = {
> .dclkmax = 9260000,
> };
>
> -static struct atmel_lcdfb_info __initdata rmt_lcdc_data = {
> +static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/atstk1000/atstk1000.h b/arch/avr32/boards/atstk1000/atstk1000.h
> index 9392d32..653cc09 100644
> --- a/arch/avr32/boards/atstk1000/atstk1000.h
> +++ b/arch/avr32/boards/atstk1000/atstk1000.h
> @@ -10,7 +10,7 @@
> #ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
> #define __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
>
> -extern struct atmel_lcdfb_info atstk1000_lcdc_data;
> +extern struct atmel_lcdfb_pdata atstk1000_lcdc_data;
>
> void atstk1000_setup_j2_leds(void);
>
> diff --git a/arch/avr32/boards/atstk1000/setup.c b/arch/avr32/boards/atstk1000/setup.c
> index 2d6b560..b6b88f5 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 = {
> .dclkmax = 30000000,
> };
>
> -struct atmel_lcdfb_info __initdata atstk1000_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata atstk1000_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .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 27bd6fb..7b1f2cd 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 = {
> .dclkmax = 28000000,
> };
>
> -struct atmel_lcdfb_info __initdata favr32_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata favr32_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/hammerhead/setup.c b/arch/avr32/boards/hammerhead/setup.c
> index 9d1efd1..dc0e317 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 = {
> .dclkmax = 10000000,
> };
>
> -struct atmel_lcdfb_info __initdata hammerhead_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata hammerhead_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/merisc/display.c b/arch/avr32/boards/merisc/display.c
> index 85a543c..e7683ee 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 = {
> .dclkmax = 30000000,
> };
>
> -struct atmel_lcdfb_info merisc_lcdc_data = {
> +struct atmel_lcdfb_pdata merisc_lcdc_data = {
> .default_bpp = 24,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/boards/mimc200/setup.c b/arch/avr32/boards/mimc200/setup.c
> index 05358aa..1cb8e9c 100644
> --- a/arch/avr32/boards/mimc200/setup.c
> +++ b/arch/avr32/boards/mimc200/setup.c
> @@ -8,7 +8,7 @@
> * published by the Free Software Foundation.
> */
>
> -extern struct atmel_lcdfb_info mimc200_lcdc_data;
> +extern struct atmel_lcdfb_pdata mimc200_lcdc_data;
>
> #include <linux/clk.h>
> #include <linux/etherdevice.h>
> @@ -71,7 +71,7 @@ static struct fb_monspecs __initdata mimc200_default_monspecs = {
> .dclkmax = 25200000,
> };
>
> -struct atmel_lcdfb_info __initdata mimc200_lcdc_data = {
> +struct atmel_lcdfb_pdata __initdata mimc200_lcdc_data = {
> .default_bpp = 16,
> .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
> .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
> diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
> index 7c2f668..0badb05 100644
> --- a/arch/avr32/mach-at32ap/at32ap700x.c
> +++ b/arch/avr32/mach-at32ap/at32ap700x.c
> @@ -1437,7 +1437,7 @@ fail:
> * LCDC
> * -------------------------------------------------------------------- */
> #if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002)
> -static struct atmel_lcdfb_info atmel_lcdfb0_data;
> +static struct atmel_lcdfb_pdata atmel_lcdfb0_data;
> static struct resource atmel_lcdfb0_resource[] = {
> {
> .start = 0xff000000,
> @@ -1465,12 +1465,12 @@ static struct clk atmel_lcdfb0_pixclk = {
> };
>
> struct platform_device *__init
> -at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> +at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data,
> unsigned long fbmem_start, unsigned long fbmem_len,
> u64 pin_mask)
> {
> struct platform_device *pdev;
> - struct atmel_lcdfb_info *info;
> + struct atmel_lcdfb_pdata *info;
> struct fb_monspecs *monspecs;
> struct fb_videomode *modedb;
> unsigned int modedb_size;
> @@ -1527,7 +1527,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> }
>
> info = pdev->dev.platform_data;
> - memcpy(info, data, sizeof(struct atmel_lcdfb_info));
> + memcpy(info, data, sizeof(struct atmel_lcdfb_pdata));
> info->default_monspecs = monspecs;
>
> 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 d485b03..f1a316d 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 *
> at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n);
> void at32_spi_setup_slaves(unsigned int bus_num, struct spi_board_info *b, unsigned int n);
>
> -struct atmel_lcdfb_info;
> +struct atmel_lcdfb_pdata;
> struct platform_device *
> -at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
> +at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_pdata *data,
> unsigned long fbmem_start, unsigned long fbmem_len,
> u64 pin_mask);
>
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index c1a2914..98733cd4 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -20,12 +20,45 @@
> #include <linux/gfp.h>
> #include <linux/module.h>
> #include <linux/platform_data/atmel.h>
> +#include <video/of_display_timing.h>
I am not sure this one is useful for this patch, maybe place it in the
4/8 one.
> #include <mach/cpu.h>
> #include <asm/gpio.h>
>
> #include <video/atmel_lcdc.h>
>
> +struct atmel_lcdfb_config {
> + bool have_alt_pixclock;
> + bool have_hozval;
> + bool have_intensity_bit;
> +};
> +
> + /* LCD Controller info data structure, stored in device platform_data */
Is comment still relevant?
> +struct atmel_lcdfb_info {
> + spinlock_t lock;
> + struct fb_info *info;
> + void __iomem *mmio;
> + int irq_base;
> + struct work_struct task;
> +
> + unsigned int smem_len;
> + struct platform_device *pdev;
> + struct clk *bus_clk;
> + struct clk *lcdc_clk;
> +
> + struct backlight_device *backlight;
> + u8 bl_power;
> + bool lcdcon_pol_negative;
> + u8 saved_lcdcon;
> +
> + u32 pseudo_palette[16];
> + bool have_intensity_bit;
> +
> + struct atmel_lcdfb_pdata pdata;
> +
> + struct atmel_lcdfb_config *config;
> +};
> +
> #define lcdc_readl(sinfo, reg) __raw_readl((sinfo)->mmio+(reg))
> #define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg))
>
> @@ -34,12 +67,6 @@
> #define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */
> #define ATMEL_LCDC_FIFO_SIZE 512 /* words */
>
> -struct atmel_lcdfb_config {
> - bool have_alt_pixclock;
> - bool have_hozval;
> - bool have_intensity_bit;
> -};
> -
> static struct atmel_lcdfb_config at91sam9261_config = {
> .have_hozval = true,
> .have_intensity_bit = true,
> @@ -242,6 +269,8 @@ static void exit_backlight(struct atmel_lcdfb_info *sinfo)
>
> static void init_contrast(struct atmel_lcdfb_info *sinfo)
> {
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> /* contrast pwm can be 'inverted' */
> if (sinfo->lcdcon_pol_negative)
> contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE);
> @@ -250,7 +279,7 @@ static void init_contrast(struct atmel_lcdfb_info *sinfo)
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT);
>
> - if (sinfo->lcdcon_is_backlight)
> + if (pdata->lcdcon_is_backlight)
> init_backlight(sinfo);
> }
>
> @@ -293,9 +322,11 @@ static unsigned long compute_hozval(struct atmel_lcdfb_info *sinfo,
>
> static void atmel_lcdfb_stop_nowait(struct atmel_lcdfb_info *sinfo)
> {
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> /* Turn off the LCD controller and the DMA controller */
> lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
> - sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET);
> + pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET);
>
> /* Wait for the LCDC core to become idle */
> while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY)
> @@ -315,9 +346,11 @@ static void atmel_lcdfb_stop(struct atmel_lcdfb_info *sinfo)
>
> static void atmel_lcdfb_start(struct atmel_lcdfb_info *sinfo)
> {
> - lcdc_writel(sinfo, ATMEL_LCDC_DMACON, sinfo->default_dmacon);
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> +
> + lcdc_writel(sinfo, ATMEL_LCDC_DMACON, pdata->default_dmacon);
> lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
> - (sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
> + (pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
> | ATMEL_LCDC_PWR);
> }
>
> @@ -418,6 +451,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> {
> struct device *dev = info->device;
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned long clk_value_khz;
>
> clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000;
> @@ -501,7 +535,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> else
> var->green.length = 6;
>
> - if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> /* RGB:5X5 mode */
> var->red.offset = var->green.length + 5;
> var->blue.offset = 0;
> @@ -518,7 +552,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
> var->transp.length = 8;
> /* fall through */
> case 24:
> - if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> /* RGB:888 mode */
> var->red.offset = 16;
> var->blue.offset = 0;
> @@ -567,6 +601,7 @@ static void atmel_lcdfb_reset(struct atmel_lcdfb_info *sinfo)
> static int atmel_lcdfb_set_par(struct fb_info *info)
> {
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned long hozval_linesz;
> unsigned long value;
> unsigned long clk_value_khz;
> @@ -628,7 +663,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
>
>
> /* Initialize control register 2 */
> - value = sinfo->default_lcdcon2;
> + value = pdata->default_lcdcon2;
>
> if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
> value |= ATMEL_LCDC_INVLINE_INVERTED;
> @@ -732,6 +767,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
> unsigned int transp, struct fb_info *info)
> {
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
> unsigned int val;
> u32 *pal;
> int ret = 1;
> @@ -768,8 +804,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
> */
> } else {
> /* new style BGR:565 / RGB:565 */
> - if (sinfo->lcd_wiring_mode ==
> - ATMEL_LCDC_WIRING_RGB) {
> + if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
> val = ((blue >> 11) & 0x001f);
> val |= ((red >> 0) & 0xf800);
> } else {
> @@ -909,7 +944,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct fb_info *info;
> struct atmel_lcdfb_info *sinfo;
> - struct atmel_lcdfb_info *pdata_sinfo;
> + struct atmel_lcdfb_pdata *pdata;
> struct fb_videomode fbmode;
> struct resource *regs = NULL;
> struct resource *map = NULL;
> @@ -927,17 +962,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> sinfo = info->par;
>
> if (dev->platform_data) {
> - pdata_sinfo = (struct atmel_lcdfb_info *)dev->platform_data;
> - sinfo->default_bpp = pdata_sinfo->default_bpp;
> - sinfo->default_dmacon = pdata_sinfo->default_dmacon;
> - sinfo->default_lcdcon2 = pdata_sinfo->default_lcdcon2;
> - sinfo->default_monspecs = pdata_sinfo->default_monspecs;
> - sinfo->atmel_lcdfb_power_control = pdata_sinfo->atmel_lcdfb_power_control;
> - sinfo->guard_time = pdata_sinfo->guard_time;
> - sinfo->smem_len = pdata_sinfo->smem_len;
> - sinfo->lcdcon_is_backlight = pdata_sinfo->lcdcon_is_backlight;
> - sinfo->lcdcon_pol_negative = pdata_sinfo->lcdcon_pol_negative;
> - sinfo->lcd_wiring_mode = pdata_sinfo->lcd_wiring_mode;
> + pdata = (struct atmel_lcdfb_pdata *)dev->platform_data;
> + sinfo->pdata = *pdata;
> } else {
> dev_err(dev, "cannot get default configuration\n");
> goto free_info;
> @@ -953,7 +979,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> info->pseudo_palette = sinfo->pseudo_palette;
> info->fbops = &atmel_lcdfb_ops;
>
> - memcpy(&info->monspecs, sinfo->default_monspecs, sizeof(info->monspecs));
> + memcpy(&info->monspecs, pdata->default_monspecs, sizeof(info->monspecs));
> info->fix = atmel_lcdfb_fix;
>
> /* Enable LCDC Clocks */
> @@ -971,7 +997,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
>
> ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb,
> info->monspecs.modedb_len, info->monspecs.modedb,
> - sinfo->default_bpp);
> + pdata->default_bpp);
> if (!ret) {
> dev_err(dev, "no suitable video mode found\n");
> goto stop_clk;
> @@ -1088,8 +1114,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
> fb_add_videomode(&fbmode, &info->modelist);
>
> /* Power up the LCDC screen */
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(1);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(1);
>
> dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n",
> info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base);
> @@ -1134,15 +1160,17 @@ static int __exit atmel_lcdfb_remove(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct fb_info *info = dev_get_drvdata(dev);
> struct atmel_lcdfb_info *sinfo;
> + struct atmel_lcdfb_pdata *pdata;
>
> if (!info || !info->par)
> return 0;
> sinfo = info->par;
> + pdata = &sinfo->pdata;
>
> cancel_work_sync(&sinfo->task);
> exit_backlight(sinfo);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(0);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(0);
> unregister_framebuffer(info);
> atmel_lcdfb_stop_clock(sinfo);
> clk_put(sinfo->lcdc_clk);
> @@ -1170,6 +1198,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
> {
> struct fb_info *info = platform_get_drvdata(pdev);
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
>
> /*
> * We don't want to handle interrupts while the clock is
> @@ -1179,8 +1208,8 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
>
> sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(0);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(0);
>
> atmel_lcdfb_stop(sinfo);
> atmel_lcdfb_stop_clock(sinfo);
> @@ -1192,11 +1221,12 @@ static int atmel_lcdfb_resume(struct platform_device *pdev)
> {
> struct fb_info *info = platform_get_drvdata(pdev);
> struct atmel_lcdfb_info *sinfo = info->par;
> + struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
>
> atmel_lcdfb_start_clock(sinfo);
> atmel_lcdfb_start(sinfo);
> - if (sinfo->atmel_lcdfb_power_control)
> - sinfo->atmel_lcdfb_power_control(1);
> + if (pdata->atmel_lcdfb_power_control)
> + pdata->atmel_lcdfb_power_control(1);
> lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon);
>
> /* Enable FIFO & DMA errors */
> diff --git a/include/video/atmel_lcdc.h b/include/video/atmel_lcdc.h
> index 0f5a2fc..2eb601c 100644
> --- a/include/video/atmel_lcdc.h
> +++ b/include/video/atmel_lcdc.h
> @@ -31,39 +31,17 @@
> #define ATMEL_LCDC_WIRING_BGR 0
> #define ATMEL_LCDC_WIRING_RGB 1
>
> -struct atmel_lcdfb_config;
>
> /* LCD Controller info data structure, stored in device platform_data */
Wrong comment: it is not the "info" data structure, this time.
> -struct atmel_lcdfb_info {
> - spinlock_t lock;
> - struct fb_info *info;
> - void __iomem *mmio;
> - int irq_base;
> - struct work_struct task;
> -
> +struct atmel_lcdfb_pdata {
> unsigned int guard_time;
> - unsigned int smem_len;
> - struct platform_device *pdev;
> - struct clk *bus_clk;
> - struct clk *lcdc_clk;
> -
> -#ifdef CONFIG_BACKLIGHT_ATMEL_LCDC
> - struct backlight_device *backlight;
> - u8 bl_power;
> -#endif
> bool lcdcon_is_backlight;
> - bool lcdcon_pol_negative;
> - u8 saved_lcdcon;
> -
> u8 default_bpp;
> u8 lcd_wiring_mode;
> unsigned int default_lcdcon2;
> unsigned int default_dmacon;
> void (*atmel_lcdfb_power_control)(int on);
> struct fb_monspecs *default_monspecs;
> - u32 pseudo_palette[16];
> -
> - struct atmel_lcdfb_config *config;
> };
>
> #define ATMEL_LCDC_DMABADDR1 0x00
>
--
Nicolas Ferre
next prev parent reply other threads:[~2013-04-16 12:33 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-11 14:57 [PATCH 0/8] ARM: at91: atmel_lcdc: add DT support Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 14:57 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` [PATCH 1/8] video: atmel_lcdfb: fix platform data struct Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` [PATCH 2/8] video: atmel_lcdfb: introduce atmel_lcdfb_power_control Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 12:35 ` Nicolas Ferre
2013-04-16 12:35 ` Nicolas Ferre
2013-04-16 12:35 ` Nicolas Ferre
2013-04-11 15:00 ` [PATCH 3/8] video: atmel_lcdfb: pass the pdata as params Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 12:38 ` Nicolas Ferre
2013-04-16 12:38 ` Nicolas Ferre
2013-04-16 12:38 ` Nicolas Ferre
2013-04-11 15:00 ` [PATCH 4/8] video: atmel_lcdfb: add device tree suport Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 13:42 ` Nicolas Ferre
2013-04-16 13:42 ` Nicolas Ferre
2013-04-16 13:42 ` Nicolas Ferre
2013-04-16 13:44 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 13:44 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 13:44 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 15:43 ` Nicolas Ferre
2013-04-16 15:43 ` Nicolas Ferre
2013-04-16 15:43 ` Nicolas Ferre
2013-05-29 15:01 ` Richard Genoud
2013-05-29 15:01 ` Richard Genoud
2013-05-29 15:01 ` Richard Genoud
2013-04-11 15:00 ` [PATCH 5/8] ARM: at91: sam9g45: add lcd support Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 13:57 ` Nicolas Ferre
2013-04-16 13:57 ` Nicolas Ferre
2013-04-16 14:00 ` Nicolas Ferre
2013-04-16 14:00 ` Nicolas Ferre
2013-04-16 15:12 ` Nicolas Ferre
2013-04-16 15:12 ` Nicolas Ferre
2013-04-11 15:00 ` [PATCH 6/8] ARM: at91: sam9263: add fb dt support Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 14:11 ` Nicolas Ferre
2013-04-16 14:11 ` Nicolas Ferre
2013-04-16 14:13 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 14:13 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 15:11 ` Nicolas Ferre
2013-04-16 15:11 ` Nicolas Ferre
2013-04-16 15:48 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 15:48 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` [PATCH 7/8] ARM: at91: at9sam9m10g45ek: add dt lcd support Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 14:56 ` Nicolas Ferre
2013-04-16 14:56 ` Nicolas Ferre
2013-04-11 15:00 ` [PATCH 8/8] ARM: at91: sam9263ek: " Jean-Christophe PLAGNIOL-VILLARD
2013-04-11 15:00 ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-16 14:54 ` Nicolas Ferre
2013-04-16 14:54 ` Nicolas Ferre
2013-04-12 9:52 ` [PATCH 1/8] video: atmel_lcdfb: fix platform data struct Hans-Christian Egtvedt
2013-04-12 9:52 ` Hans-Christian Egtvedt
2013-04-12 9:52 ` Hans-Christian Egtvedt
2013-04-16 12:33 ` Nicolas Ferre [this message]
2013-04-16 12:33 ` Nicolas Ferre
2013-04-16 12:33 ` Nicolas Ferre
2013-05-29 14:36 ` Richard Genoud
2013-05-29 14:36 ` Richard Genoud
2013-05-29 14:36 ` Richard Genoud
2013-05-29 17:35 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-29 17:35 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-29 17:35 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-29 17:44 ` Richard Genoud
2013-05-29 17:44 ` Richard Genoud
2013-05-29 17:44 ` Richard Genoud
2013-05-29 19:32 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-29 19:32 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-29 19:32 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-30 6:39 ` Richard Genoud
2013-05-30 6:39 ` Richard Genoud
2013-05-30 6:39 ` Richard Genoud
2013-05-30 7:23 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-30 7:23 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-30 7:23 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-30 14:05 ` Hans-Christian Egtvedt
2013-05-30 14:05 ` Hans-Christian Egtvedt
2013-05-30 14:05 ` Hans-Christian Egtvedt
2013-05-30 14:27 ` Andreas Bießmann
2013-05-30 14:27 ` Andreas Bießmann
2013-05-30 14:27 ` Andreas Bießmann
2013-05-30 14:59 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-30 14:59 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-30 14:59 ` Jean-Christophe PLAGNIOL-VILLARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=516D452F.2000109@atmel.com \
--to=nicolas.ferre@atmel.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.