1/*
2 * Display setup code for the Merisc board
3 *
4 * Copyright (C) 2008 Martinsson Elektronik AB
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10#include <linux/init.h>
11#include <linux/platform_device.h>
12#include <linux/fb.h>
13#include <video/atmel_lcdc.h>
14#include <asm/setup.h>
15#include <mach/board.h>
16#include "merisc.h"
17
18static struct fb_videomode merisc_fb_videomode[] = {
19	{
20		.refresh	= 44,
21		.xres		= 640,
22		.yres		= 480,
23		.left_margin	= 96,
24		.right_margin	= 96,
25		.upper_margin	= 34,
26		.lower_margin	= 8,
27		.hsync_len	= 64,
28		.vsync_len	= 64,
29		.name		= "640x480 @ 44",
30		.pixclock	= KHZ2PICOS(25180),
31		.sync		= 0,
32		.vmode		= FB_VMODE_NONINTERLACED,
33	},
34};
35
36static struct fb_monspecs merisc_fb_monspecs = {
37	.manufacturer	= "Kyo",
38	.monitor	= "TCG075VG2AD",
39	.modedb		= merisc_fb_videomode,
40	.modedb_len	= ARRAY_SIZE(merisc_fb_videomode),
41	.hfmin		= 30000,
42	.hfmax		= 33333,
43	.vfmin		= 60,
44	.vfmax		= 90,
45	.dclkmax	= 30000000,
46};
47
48struct atmel_lcdfb_pdata merisc_lcdc_data = {
49	.default_bpp		= 24,
50	.default_dmacon		= ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
51	.default_lcdcon2	= (ATMEL_LCDC_DISTYPE_TFT
52				   | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
53				   | ATMEL_LCDC_MEMOR_BIG),
54	.default_monspecs	= &merisc_fb_monspecs,
55	.guard_time		= 2,
56};
57
58static int __init merisc_display_init(void)
59{
60	at32_add_device_lcdc(0, &merisc_lcdc_data, fbmem_start,
61			     fbmem_size, 0);
62
63	return 0;
64}
65device_initcall(merisc_display_init);
66