diff options
Diffstat (limited to 'arch/arm/mach-at91/board-sam9263ek.c')
-rw-r--r-- | arch/arm/mach-at91/board-sam9263ek.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index c164c8e58ae6..2a1cc73390b7 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c | |||
@@ -26,6 +26,9 @@ | |||
26 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
27 | #include <linux/spi/spi.h> | 27 | #include <linux/spi/spi.h> |
28 | #include <linux/spi/ads7846.h> | 28 | #include <linux/spi/ads7846.h> |
29 | #include <linux/fb.h> | ||
30 | |||
31 | #include <video/atmel_lcdc.h> | ||
29 | 32 | ||
30 | #include <asm/hardware.h> | 33 | #include <asm/hardware.h> |
31 | #include <asm/setup.h> | 34 | #include <asm/setup.h> |
@@ -202,6 +205,65 @@ static struct at91_nand_data __initdata ek_nand_data = { | |||
202 | 205 | ||
203 | 206 | ||
204 | /* | 207 | /* |
208 | * LCD Controller | ||
209 | */ | ||
210 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||
211 | static struct fb_videomode at91_tft_vga_modes[] = { | ||
212 | { | ||
213 | .name = "TX09D50VM1CCA @ 60", | ||
214 | .refresh = 60, | ||
215 | .xres = 240, .yres = 320, | ||
216 | .pixclock = KHZ2PICOS(4965), | ||
217 | |||
218 | .left_margin = 1, .right_margin = 33, | ||
219 | .upper_margin = 1, .lower_margin = 0, | ||
220 | .hsync_len = 5, .vsync_len = 1, | ||
221 | |||
222 | .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, | ||
223 | .vmode = FB_VMODE_NONINTERLACED, | ||
224 | }, | ||
225 | }; | ||
226 | |||
227 | static struct fb_monspecs at91fb_default_monspecs = { | ||
228 | .manufacturer = "HIT", | ||
229 | .monitor = "TX09D70VM1CCA", | ||
230 | |||
231 | .modedb = at91_tft_vga_modes, | ||
232 | .modedb_len = ARRAY_SIZE(at91_tft_vga_modes), | ||
233 | .hfmin = 15000, | ||
234 | .hfmax = 64000, | ||
235 | .vfmin = 50, | ||
236 | .vfmax = 150, | ||
237 | }; | ||
238 | |||
239 | #define AT91SAM9263_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \ | ||
240 | | ATMEL_LCDC_DISTYPE_TFT \ | ||
241 | | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE) | ||
242 | |||
243 | static void at91_lcdc_power_control(int on) | ||
244 | { | ||
245 | if (on) | ||
246 | at91_set_gpio_value(AT91_PIN_PD12, 0); /* power up */ | ||
247 | else | ||
248 | at91_set_gpio_value(AT91_PIN_PD12, 1); /* power down */ | ||
249 | } | ||
250 | |||
251 | /* Driver datas */ | ||
252 | static struct atmel_lcdfb_info __initdata ek_lcdc_data = { | ||
253 | .default_bpp = 16, | ||
254 | .default_dmacon = ATMEL_LCDC_DMAEN, | ||
255 | .default_lcdcon2 = AT91SAM9263_DEFAULT_LCDCON2, | ||
256 | .default_monspecs = &at91fb_default_monspecs, | ||
257 | .atmel_lcdfb_power_control = at91_lcdc_power_control, | ||
258 | .guard_time = 1, | ||
259 | }; | ||
260 | |||
261 | #else | ||
262 | static struct atmel_lcdfb_info __initdata ek_lcdc_data; | ||
263 | #endif | ||
264 | |||
265 | |||
266 | /* | ||
205 | * AC97 | 267 | * AC97 |
206 | */ | 268 | */ |
207 | static struct atmel_ac97_data ek_ac97_data = { | 269 | static struct atmel_ac97_data ek_ac97_data = { |
@@ -230,6 +292,8 @@ static void __init ek_board_init(void) | |||
230 | at91_add_device_nand(&ek_nand_data); | 292 | at91_add_device_nand(&ek_nand_data); |
231 | /* I2C */ | 293 | /* I2C */ |
232 | at91_add_device_i2c(); | 294 | at91_add_device_i2c(); |
295 | /* LCD Controller */ | ||
296 | at91_add_device_lcdc(&ek_lcdc_data); | ||
233 | /* AC97 */ | 297 | /* AC97 */ |
234 | at91_add_device_ac97(&ek_ac97_data); | 298 | at91_add_device_ac97(&ek_ac97_data); |
235 | } | 299 | } |