Commit 8af2c286 authored by Jean-Christophe PLAGNIOL-VILLARD's avatar Jean-Christophe PLAGNIOL-VILLARD Committed by Tomi Valkeinen

video: atmel_lcdfb: fix platform data struct

Today we mix pdata and drivers data in the struct atmel_lcdfb_info
Fix it and introduce a new struct atmel_lcdfb_pdata for platform data only
Signed-off-by: default avatarJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 090fd593
...@@ -465,7 +465,7 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) ...@@ -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) #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32); 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[] = { static struct resource lcdc_resources[] = {
[0] = { [0] = {
...@@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = { ...@@ -498,7 +498,7 @@ static struct platform_device at91_lcdc_device = {
.num_resources = ARRAY_SIZE(lcdc_resources), .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) { if (!data) {
return; return;
...@@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) ...@@ -559,7 +559,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
platform_device_register(&at91_lcdc_device); platform_device_register(&at91_lcdc_device);
} }
#else #else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif #endif
......
...@@ -832,7 +832,7 @@ void __init at91_add_device_can(struct at91_can_data *data) {} ...@@ -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) #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32); 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[] = { static struct resource lcdc_resources[] = {
[0] = { [0] = {
...@@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = { ...@@ -859,7 +859,7 @@ static struct platform_device at91_lcdc_device = {
.num_resources = ARRAY_SIZE(lcdc_resources), .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) if (!data)
return; return;
...@@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) ...@@ -891,7 +891,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
platform_device_register(&at91_lcdc_device); platform_device_register(&at91_lcdc_device);
} }
#else #else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif #endif
......
...@@ -965,7 +965,7 @@ void __init at91_add_device_isi(struct isi_platform_data *data, ...@@ -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) #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32); 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[] = { static struct resource lcdc_resources[] = {
[0] = { [0] = {
...@@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = { ...@@ -991,7 +991,7 @@ static struct platform_device at91_lcdc_device = {
.num_resources = ARRAY_SIZE(lcdc_resources), .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) if (!data)
return; return;
...@@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) ...@@ -1037,7 +1037,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
platform_device_register(&at91_lcdc_device); platform_device_register(&at91_lcdc_device);
} }
#else #else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif #endif
......
...@@ -498,7 +498,7 @@ void __init at91_add_device_ac97(struct ac97c_platform_data *data) {} ...@@ -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) #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static u64 lcdc_dmamask = DMA_BIT_MASK(32); 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[] = { static struct resource lcdc_resources[] = {
[0] = { [0] = {
...@@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = { ...@@ -525,7 +525,7 @@ static struct platform_device at91_lcdc_device = {
.num_resources = ARRAY_SIZE(lcdc_resources), .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) { if (!data) {
return; return;
...@@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) ...@@ -557,7 +557,7 @@ void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data)
platform_device_register(&at91_lcdc_device); platform_device_register(&at91_lcdc_device);
} }
#else #else
void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data) {}
#endif #endif
......
...@@ -401,7 +401,7 @@ static void at91_lcdc_stn_power_control(int on) ...@@ -401,7 +401,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_bpp = 1,
.default_dmacon = ATMEL_LCDC_DMAEN, .default_dmacon = ATMEL_LCDC_DMAEN,
.default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2, .default_lcdcon2 = AT91SAM9261_DEFAULT_STN_LCDCON2,
...@@ -453,7 +453,7 @@ static void at91_lcdc_tft_power_control(int on) ...@@ -453,7 +453,7 @@ static void at91_lcdc_tft_power_control(int on)
at91_set_gpio_value(AT91_PIN_PA12, 1); /* power down */ 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, .lcdcon_is_backlight = true,
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN, .default_dmacon = ATMEL_LCDC_DMAEN,
...@@ -465,7 +465,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { ...@@ -465,7 +465,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
#endif #endif
#else #else
static struct atmel_lcdfb_info __initdata ek_lcdc_data; static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
#endif #endif
......
...@@ -281,7 +281,7 @@ static void at91_lcdc_power_control(int on) ...@@ -281,7 +281,7 @@ static void at91_lcdc_power_control(int on)
} }
/* Driver datas */ /* Driver datas */
static struct atmel_lcdfb_info __initdata ek_lcdc_data = { static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
.lcdcon_is_backlight = true, .lcdcon_is_backlight = true,
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN, .default_dmacon = ATMEL_LCDC_DMAEN,
...@@ -292,7 +292,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { ...@@ -292,7 +292,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
}; };
#else #else
static struct atmel_lcdfb_info __initdata ek_lcdc_data; static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
#endif #endif
......
...@@ -284,7 +284,7 @@ static struct fb_monspecs at91fb_default_monspecs = { ...@@ -284,7 +284,7 @@ static struct fb_monspecs at91fb_default_monspecs = {
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
/* Driver datas */ /* Driver datas */
static struct atmel_lcdfb_info __initdata ek_lcdc_data = { static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
.lcdcon_is_backlight = true, .lcdcon_is_backlight = true,
.default_bpp = 32, .default_bpp = 32,
.default_dmacon = ATMEL_LCDC_DMAEN, .default_dmacon = ATMEL_LCDC_DMAEN,
...@@ -295,7 +295,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { ...@@ -295,7 +295,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
}; };
#else #else
static struct atmel_lcdfb_info __initdata ek_lcdc_data; static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
#endif #endif
......
...@@ -179,7 +179,7 @@ static void at91_lcdc_power_control(int on) ...@@ -179,7 +179,7 @@ static void at91_lcdc_power_control(int on)
} }
/* Driver datas */ /* Driver datas */
static struct atmel_lcdfb_info __initdata ek_lcdc_data = { static struct atmel_lcdfb_pdata __initdata ek_lcdc_data = {
.lcdcon_is_backlight = true, .lcdcon_is_backlight = true,
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN, .default_dmacon = ATMEL_LCDC_DMAEN,
...@@ -191,7 +191,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = { ...@@ -191,7 +191,7 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
}; };
#else #else
static struct atmel_lcdfb_info __initdata ek_lcdc_data; static struct atmel_lcdfb_pdata __initdata ek_lcdc_data;
#endif #endif
......
...@@ -107,8 +107,8 @@ extern void __init at91_add_device_pwm(u32 mask); ...@@ -107,8 +107,8 @@ extern void __init at91_add_device_pwm(u32 mask);
extern void __init at91_add_device_ssc(unsigned id, unsigned pins); extern void __init at91_add_device_ssc(unsigned id, unsigned pins);
/* LCD Controller */ /* LCD Controller */
struct atmel_lcdfb_info; struct atmel_lcdfb_pdata;
extern void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data); extern void __init at91_add_device_lcdc(struct atmel_lcdfb_pdata *data);
/* AC97 */ /* AC97 */
extern void __init at91_add_device_ac97(struct ac97c_platform_data *data); extern void __init at91_add_device_ac97(struct ac97c_platform_data *data);
......
...@@ -58,7 +58,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = { ...@@ -58,7 +58,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
.dclkmax = 28330000, .dclkmax = 28330000,
}; };
static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = { static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
...@@ -96,7 +96,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = { ...@@ -96,7 +96,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
.dclkmax = 7000000, .dclkmax = 7000000,
}; };
static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = { static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
...@@ -134,7 +134,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = { ...@@ -134,7 +134,7 @@ static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
.dclkmax = 6400000, .dclkmax = 6400000,
}; };
static struct atmel_lcdfb_info __initdata atevklcd10x_lcdc_data = { static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -83,7 +83,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = { ...@@ -83,7 +83,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = {
.dclkmax = 9260000, .dclkmax = 9260000,
}; };
static struct atmel_lcdfb_info __initdata rmt_lcdc_data = { static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
.default_bpp = 24, .default_bpp = 24,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
...@@ -126,7 +126,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = { ...@@ -126,7 +126,7 @@ static struct fb_monspecs __initdata lcd_fb_default_monspecs = {
.dclkmax = 9260000, .dclkmax = 9260000,
}; };
static struct atmel_lcdfb_info __initdata rmt_lcdc_data = { static struct atmel_lcdfb_pdata __initdata rmt_lcdc_data = {
.default_bpp = 24, .default_bpp = 24,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H #ifndef __ARCH_AVR32_BOARDS_ATSTK1000_ATSTK1000_H
#define __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); void atstk1000_setup_j2_leds(void);
......
...@@ -55,7 +55,7 @@ static struct fb_monspecs __initdata atstk1000_default_monspecs = { ...@@ -55,7 +55,7 @@ static struct fb_monspecs __initdata atstk1000_default_monspecs = {
.dclkmax = 30000000, .dclkmax = 30000000,
}; };
struct atmel_lcdfb_info __initdata atstk1000_lcdc_data = { struct atmel_lcdfb_pdata __initdata atstk1000_lcdc_data = {
.default_bpp = 24, .default_bpp = 24,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -125,7 +125,7 @@ static struct fb_monspecs __initdata favr32_default_monspecs = { ...@@ -125,7 +125,7 @@ static struct fb_monspecs __initdata favr32_default_monspecs = {
.dclkmax = 28000000, .dclkmax = 28000000,
}; };
struct atmel_lcdfb_info __initdata favr32_lcdc_data = { struct atmel_lcdfb_pdata __initdata favr32_lcdc_data = {
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -77,7 +77,7 @@ static struct fb_monspecs __initdata hammerhead_hda350t_monspecs = { ...@@ -77,7 +77,7 @@ static struct fb_monspecs __initdata hammerhead_hda350t_monspecs = {
.dclkmax = 10000000, .dclkmax = 10000000,
}; };
struct atmel_lcdfb_info __initdata hammerhead_lcdc_data = { struct atmel_lcdfb_pdata __initdata hammerhead_lcdc_data = {
.default_bpp = 24, .default_bpp = 24,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -45,7 +45,7 @@ static struct fb_monspecs merisc_fb_monspecs = { ...@@ -45,7 +45,7 @@ static struct fb_monspecs merisc_fb_monspecs = {
.dclkmax = 30000000, .dclkmax = 30000000,
}; };
struct atmel_lcdfb_info merisc_lcdc_data = { struct atmel_lcdfb_pdata merisc_lcdc_data = {
.default_bpp = 24, .default_bpp = 24,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* published by the Free Software Foundation. * 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/clk.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
...@@ -71,7 +71,7 @@ static struct fb_monspecs __initdata mimc200_default_monspecs = { ...@@ -71,7 +71,7 @@ static struct fb_monspecs __initdata mimc200_default_monspecs = {
.dclkmax = 25200000, .dclkmax = 25200000,
}; };
struct atmel_lcdfb_info __initdata mimc200_lcdc_data = { struct atmel_lcdfb_pdata __initdata mimc200_lcdc_data = {
.default_bpp = 16, .default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN, .default_dmacon = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
.default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT .default_lcdcon2 = (ATMEL_LCDC_DISTYPE_TFT
......
...@@ -1439,7 +1439,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data) ...@@ -1439,7 +1439,7 @@ at32_add_device_mci(unsigned int id, struct mci_platform_data *data)
* LCDC * LCDC
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#if defined(CONFIG_CPU_AT32AP7000) || defined(CONFIG_CPU_AT32AP7002) #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[] = { static struct resource atmel_lcdfb0_resource[] = {
{ {
.start = 0xff000000, .start = 0xff000000,
...@@ -1467,12 +1467,12 @@ static struct clk atmel_lcdfb0_pixclk = { ...@@ -1467,12 +1467,12 @@ static struct clk atmel_lcdfb0_pixclk = {
}; };
struct platform_device *__init 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, unsigned long fbmem_start, unsigned long fbmem_len,
u64 pin_mask) u64 pin_mask)
{ {
struct platform_device *pdev; struct platform_device *pdev;
struct atmel_lcdfb_info *info; struct atmel_lcdfb_pdata *info;
struct fb_monspecs *monspecs; struct fb_monspecs *monspecs;
struct fb_videomode *modedb; struct fb_videomode *modedb;
unsigned int modedb_size; unsigned int modedb_size;
...@@ -1529,7 +1529,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data, ...@@ -1529,7 +1529,7 @@ at32_add_device_lcdc(unsigned int id, struct atmel_lcdfb_info *data,
} }
info = pdev->dev.platform_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; info->default_monspecs = monspecs;
pdev->name = "at32ap-lcdfb"; pdev->name = "at32ap-lcdfb";
......
...@@ -44,9 +44,9 @@ struct platform_device * ...@@ -44,9 +44,9 @@ struct platform_device *
at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n); 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); 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 * 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, unsigned long fbmem_start, unsigned long fbmem_len,
u64 pin_mask); u64 pin_mask);
......
...@@ -20,12 +20,44 @@ ...@@ -20,12 +20,44 @@
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/platform_data/atmel.h> #include <linux/platform_data/atmel.h>
#include <video/of_display_timing.h>
#include <mach/cpu.h> #include <mach/cpu.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <video/atmel_lcdc.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 */
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;
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_readl(sinfo, reg) __raw_readl((sinfo)->mmio+(reg))
#define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg)) #define lcdc_writel(sinfo, reg, val) __raw_writel((val), (sinfo)->mmio+(reg))
...@@ -34,12 +66,6 @@ ...@@ -34,12 +66,6 @@
#define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */ #define ATMEL_LCDC_DMA_BURST_LEN 8 /* words */
#define ATMEL_LCDC_FIFO_SIZE 512 /* 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 = { static struct atmel_lcdfb_config at91sam9261_config = {
.have_hozval = true, .have_hozval = true,
.have_intensity_bit = true, .have_intensity_bit = true,
...@@ -248,15 +274,17 @@ static void exit_backlight(struct atmel_lcdfb_info *sinfo) ...@@ -248,15 +274,17 @@ static void exit_backlight(struct atmel_lcdfb_info *sinfo)
static void init_contrast(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' */ /* contrast pwm can be 'inverted' */
if (sinfo->lcdcon_pol_negative) if (pdata->lcdcon_pol_negative)
contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE); contrast_ctr &= ~(ATMEL_LCDC_POL_POSITIVE);
/* have some default contrast/backlight settings */ /* have some default contrast/backlight settings */
lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr); lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, contrast_ctr);
lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT); lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_VAL, ATMEL_LCDC_CVAL_DEFAULT);
if (sinfo->lcdcon_is_backlight) if (pdata->lcdcon_is_backlight)
init_backlight(sinfo); init_backlight(sinfo);
} }
...@@ -299,9 +327,11 @@ static unsigned long compute_hozval(struct atmel_lcdfb_info *sinfo, ...@@ -299,9 +327,11 @@ static unsigned long compute_hozval(struct atmel_lcdfb_info *sinfo,
static void atmel_lcdfb_stop_nowait(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 */ /* Turn off the LCD controller and the DMA controller */
lcdc_writel(sinfo, ATMEL_LCDC_PWRCON, 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 */ /* Wait for the LCDC core to become idle */
while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY) while (lcdc_readl(sinfo, ATMEL_LCDC_PWRCON) & ATMEL_LCDC_BUSY)
...@@ -321,9 +351,11 @@ static void atmel_lcdfb_stop(struct atmel_lcdfb_info *sinfo) ...@@ -321,9 +351,11 @@ static void atmel_lcdfb_stop(struct atmel_lcdfb_info *sinfo)
static void atmel_lcdfb_start(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, lcdc_writel(sinfo, ATMEL_LCDC_PWRCON,
(sinfo->guard_time << ATMEL_LCDC_GUARDT_OFFSET) (pdata->guard_time << ATMEL_LCDC_GUARDT_OFFSET)
| ATMEL_LCDC_PWR); | ATMEL_LCDC_PWR);
} }
...@@ -424,6 +456,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var, ...@@ -424,6 +456,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
{ {
struct device *dev = info->device; struct device *dev = info->device;
struct atmel_lcdfb_info *sinfo = info->par; struct atmel_lcdfb_info *sinfo = info->par;
struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
unsigned long clk_value_khz; unsigned long clk_value_khz;
clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000; clk_value_khz = clk_get_rate(sinfo->lcdc_clk) / 1000;
...@@ -510,7 +543,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var, ...@@ -510,7 +543,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
else else
var->green.length = 6; 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 */ /* RGB:5X5 mode */
var->red.offset = var->green.length + 5; var->red.offset = var->green.length + 5;
var->blue.offset = 0; var->blue.offset = 0;
...@@ -527,7 +560,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var, ...@@ -527,7 +560,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
var->transp.length = 8; var->transp.length = 8;
/* fall through */ /* fall through */
case 24: case 24:
if (sinfo->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) { if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
/* RGB:888 mode */ /* RGB:888 mode */
var->red.offset = 16; var->red.offset = 16;
var->blue.offset = 0; var->blue.offset = 0;
...@@ -576,6 +609,7 @@ static void atmel_lcdfb_reset(struct atmel_lcdfb_info *sinfo) ...@@ -576,6 +609,7 @@ static void atmel_lcdfb_reset(struct atmel_lcdfb_info *sinfo)
static int atmel_lcdfb_set_par(struct fb_info *info) static int atmel_lcdfb_set_par(struct fb_info *info)
{ {
struct atmel_lcdfb_info *sinfo = info->par; struct atmel_lcdfb_info *sinfo = info->par;
struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
unsigned long hozval_linesz; unsigned long hozval_linesz;
unsigned long value; unsigned long value;
unsigned long clk_value_khz; unsigned long clk_value_khz;
...@@ -637,7 +671,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info) ...@@ -637,7 +671,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
/* Initialize control register 2 */ /* Initialize control register 2 */
value = sinfo->default_lcdcon2; value = pdata->default_lcdcon2;
if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT)) if (!(info->var.sync & FB_SYNC_HOR_HIGH_ACT))
value |= ATMEL_LCDC_INVLINE_INVERTED; value |= ATMEL_LCDC_INVLINE_INVERTED;
...@@ -741,6 +775,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red, ...@@ -741,6 +775,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
unsigned int transp, struct fb_info *info) unsigned int transp, struct fb_info *info)
{ {
struct atmel_lcdfb_info *sinfo = info->par; struct atmel_lcdfb_info *sinfo = info->par;
struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
unsigned int val; unsigned int val;
u32 *pal; u32 *pal;
int ret = 1; int ret = 1;
...@@ -777,8 +812,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red, ...@@ -777,8 +812,7 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
*/ */
} else { } else {
/* new style BGR:565 / RGB:565 */ /* new style BGR:565 / RGB:565 */
if (sinfo->lcd_wiring_mode == if (pdata->lcd_wiring_mode == ATMEL_LCDC_WIRING_RGB) {
ATMEL_LCDC_WIRING_RGB) {
val = ((blue >> 11) & 0x001f); val = ((blue >> 11) & 0x001f);
val |= ((red >> 0) & 0xf800); val |= ((red >> 0) & 0xf800);
} else { } else {
...@@ -918,7 +952,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) ...@@ -918,7 +952,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct fb_info *info; struct fb_info *info;
struct atmel_lcdfb_info *sinfo; struct atmel_lcdfb_info *sinfo;
struct atmel_lcdfb_info *pdata_sinfo; struct atmel_lcdfb_pdata *pdata;
struct fb_videomode fbmode; struct fb_videomode fbmode;
struct resource *regs = NULL; struct resource *regs = NULL;
struct resource *map = NULL; struct resource *map = NULL;
...@@ -936,17 +970,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) ...@@ -936,17 +970,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
sinfo = info->par; sinfo = info->par;
if (dev_get_platdata(dev)) { if (dev_get_platdata(dev)) {
pdata_sinfo = dev_get_platdata(dev); pdata = dev_get_platdata(dev);
sinfo->default_bpp = pdata_sinfo->default_bpp; sinfo->pdata = *pdata;
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;
} else { } else {
dev_err(dev, "cannot get default configuration\n"); dev_err(dev, "cannot get default configuration\n");
goto free_info; goto free_info;
...@@ -962,7 +987,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) ...@@ -962,7 +987,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
info->pseudo_palette = sinfo->pseudo_palette; info->pseudo_palette = sinfo->pseudo_palette;
info->fbops = &atmel_lcdfb_ops; 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; info->fix = atmel_lcdfb_fix;
/* Enable LCDC Clocks */ /* Enable LCDC Clocks */
...@@ -980,7 +1005,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) ...@@ -980,7 +1005,7 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb, ret = fb_find_mode(&info->var, info, NULL, info->monspecs.modedb,
info->monspecs.modedb_len, info->monspecs.modedb, info->monspecs.modedb_len, info->monspecs.modedb,
sinfo->default_bpp); pdata->default_bpp);
if (!ret) { if (!ret) {
dev_err(dev, "no suitable video mode found\n"); dev_err(dev, "no suitable video mode found\n");
goto stop_clk; goto stop_clk;
...@@ -1097,8 +1122,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev) ...@@ -1097,8 +1122,8 @@ static int __init atmel_lcdfb_probe(struct platform_device *pdev)
fb_add_videomode(&fbmode, &info->modelist); fb_add_videomode(&fbmode, &info->modelist);
/* Power up the LCDC screen */ /* Power up the LCDC screen */
if (sinfo->atmel_lcdfb_power_control) if (pdata->atmel_lcdfb_power_control)
sinfo->atmel_lcdfb_power_control(1); pdata->atmel_lcdfb_power_control(1);
dev_info(dev, "fb%d: Atmel LCDC at 0x%08lx (mapped at %p), irq %d\n", 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); info->node, info->fix.mmio_start, sinfo->mmio, sinfo->irq_base);
...@@ -1141,15 +1166,17 @@ static int __exit atmel_lcdfb_remove(struct platform_device *pdev) ...@@ -1141,15 +1166,17 @@ static int __exit atmel_lcdfb_remove(struct platform_device *pdev)
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct fb_info *info = dev_get_drvdata(dev); struct fb_info *info = dev_get_drvdata(dev);
struct atmel_lcdfb_info *sinfo; struct atmel_lcdfb_info *sinfo;
struct atmel_lcdfb_pdata *pdata;
if (!info || !info->par) if (!info || !info->par)
return 0; return 0;
sinfo = info->par; sinfo = info->par;
pdata = &sinfo->pdata;
cancel_work_sync(&sinfo->task); cancel_work_sync(&sinfo->task);
exit_backlight(sinfo); exit_backlight(sinfo);
if (sinfo->atmel_lcdfb_power_control) if (pdata->atmel_lcdfb_power_control)
sinfo->atmel_lcdfb_power_control(0); pdata->atmel_lcdfb_power_control(0);
unregister_framebuffer(info); unregister_framebuffer(info);
atmel_lcdfb_stop_clock(sinfo); atmel_lcdfb_stop_clock(sinfo);
clk_put(sinfo->lcdc_clk); clk_put(sinfo->lcdc_clk);
...@@ -1176,6 +1203,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg) ...@@ -1176,6 +1203,7 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
{ {
struct fb_info *info = platform_get_drvdata(pdev); struct fb_info *info = platform_get_drvdata(pdev);
struct atmel_lcdfb_info *sinfo = info->par; 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 * We don't want to handle interrupts while the clock is
...@@ -1185,8 +1213,8 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg) ...@@ -1185,8 +1213,8 @@ static int atmel_lcdfb_suspend(struct platform_device *pdev, pm_message_t mesg)
sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR); sinfo->saved_lcdcon = lcdc_readl(sinfo, ATMEL_LCDC_CONTRAST_CTR);
lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0); lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, 0);
if (sinfo->atmel_lcdfb_power_control) if (pdata->atmel_lcdfb_power_control)
sinfo->atmel_lcdfb_power_control(0); pdata->atmel_lcdfb_power_control(0);
atmel_lcdfb_stop(sinfo); atmel_lcdfb_stop(sinfo);
atmel_lcdfb_stop_clock(sinfo); atmel_lcdfb_stop_clock(sinfo);
...@@ -1198,11 +1226,12 @@ static int atmel_lcdfb_resume(struct platform_device *pdev) ...@@ -1198,11 +1226,12 @@ static int atmel_lcdfb_resume(struct platform_device *pdev)
{ {
struct fb_info *info = platform_get_drvdata(pdev); struct fb_info *info = platform_get_drvdata(pdev);
struct atmel_lcdfb_info *sinfo = info->par; struct atmel_lcdfb_info *sinfo = info->par;
struct atmel_lcdfb_pdata *pdata = &sinfo->pdata;
atmel_lcdfb_start_clock(sinfo); atmel_lcdfb_start_clock(sinfo);
atmel_lcdfb_start(sinfo); atmel_lcdfb_start(sinfo);
if (sinfo->atmel_lcdfb_power_control) if (pdata->atmel_lcdfb_power_control)
sinfo->atmel_lcdfb_power_control(1); pdata->atmel_lcdfb_power_control(1);
lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon); lcdc_writel(sinfo, ATMEL_LCDC_CONTRAST_CTR, sinfo->saved_lcdcon);
/* Enable FIFO & DMA errors */ /* Enable FIFO & DMA errors */
......
...@@ -31,39 +31,18 @@ ...@@ -31,39 +31,18 @@
#define ATMEL_LCDC_WIRING_BGR 0 #define ATMEL_LCDC_WIRING_BGR 0
#define ATMEL_LCDC_WIRING_RGB 1 #define ATMEL_LCDC_WIRING_RGB 1
struct atmel_lcdfb_config;
/* LCD Controller info data structure, stored in device platform_data */ /* LCD Controller info data structure, stored in device platform_data */
struct atmel_lcdfb_info { struct atmel_lcdfb_pdata {
spinlock_t lock;
struct fb_info *info;
void __iomem *mmio;
int irq_base;
struct work_struct task;
unsigned int guard_time; 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_is_backlight;
bool lcdcon_pol_negative; bool lcdcon_pol_negative;
u8 saved_lcdcon;
u8 default_bpp; u8 default_bpp;
u8 lcd_wiring_mode; u8 lcd_wiring_mode;
unsigned int default_lcdcon2; unsigned int default_lcdcon2;
unsigned int default_dmacon; unsigned int default_dmacon;
void (*atmel_lcdfb_power_control)(int on); void (*atmel_lcdfb_power_control)(int on);
struct fb_monspecs *default_monspecs; struct fb_monspecs *default_monspecs;
u32 pseudo_palette[16];
struct atmel_lcdfb_config *config;
}; };
#define ATMEL_LCDC_DMABADDR1 0x00 #define ATMEL_LCDC_DMABADDR1 0x00
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment