mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-31 16:13:22 +00:00
video: atmel_lcdfb: fix platform data struct
Today we mix pdata and drivers data in the struct atmel_lcdfb_info Fix it and introduce a new struct atmel_lcdfb_pdata for platform data only Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
090fd59308
commit
8af2c2869f
@ -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 = {
|
|||||||
.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)
|
|||||||
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) {}
|
|||||||
|
|
||||||
#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 = {
|
|||||||
.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)
|
|||||||
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,
|
|||||||
|
|
||||||
#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 = {
|
|||||||
.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)
|
|||||||
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) {}
|
|||||||
|
|
||||||
#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 = {
|
|||||||
.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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|||||||
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 = {
|
|||||||
#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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#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 = {
|
|||||||
| 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 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#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);
|
|||||||
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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 @@
|
|||||||
#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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 = {
|
|||||||
.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 @@
|
|||||||
* 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 = {
|
|||||||
.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 @@ fail:
|
|||||||
* 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 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 *
|
|||||||
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 @@
|
|||||||
#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 @@
|
|||||||
#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)
|
|||||||
|
|
||||||
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,
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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,
|
|||||||
{
|
{
|
||||||
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,
|
|||||||
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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
|
|
||||||
/* 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,
|
|||||||
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,
|
|||||||
*/
|
*/
|
||||||
} 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
{
|
{
|
||||||
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 @@
|
|||||||
#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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user