/*
 * Display setup code for the Merisc board
 *
 * Copyright (C) 2008 Martinsson Elektronik AB
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
#include <video/atmel_lcdc.h>
#include <asm/setup.h>
#include <mach/board.h>
#include "merisc.h"

static struct fb_videomode merisc_fb_videomode[] = {
	{
		.refresh	= 44,
		.xres		= 640,
		.yres		= 480,
		.left_margin	= 96,
		.right_margin	= 96,
		.upper_margin	= 34,
		.lower_margin	= 8,
		.hsync_len	= 64,
		.vsync_len	= 64,
		.name		= "640x480 @ 44",
		.pixclock	= KHZ2PICOS(25180),
		.sync		= 0,
		.vmode		= FB_VMODE_NONINTERLACED,
	},
};

static struct fb_monspecs merisc_fb_monspecs = {
	.manufacturer	= "Kyo",
	.monitor	= "TCG075VG2AD",
	.modedb		= merisc_fb_videomode,
	.modedb_len	= ARRAY_SIZE(merisc_fb_videomode),
	.hfmin		= 30000,
	.hfmax		= 33333,
	.vfmin		= 60,
	.vfmax		= 90,
	.dclkmax	= 30000000,
};

struct atmel_lcdfb_pdata merisc_lcdc_data = {
	.default_bpp		= 24,
	.default_dmacon		= ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
	.default_lcdcon2	= (ATMEL_LCDC_DISTYPE_TFT
				   | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
				   | ATMEL_LCDC_MEMOR_BIG),
	.default_monspecs	= &merisc_fb_monspecs,
	.guard_time		= 2,
};

static int __init merisc_display_init(void)
{
	at32_add_device_lcdc(0, &merisc_lcdc_data, fbmem_start,
			     fbmem_size, 0);

	return 0;
}
device_initcall(merisc_display_init);
