aaed2000.c 2.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/*
 *  linux/arch/arm/mach-aaec2000/aaed2000.c
 *
 *  Support for the Agilent AAED-2000 Development Platform.
 *
 *  Copyright (c) 2005 Nicolas Bellido Y Ortega
 *
 *  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/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/major.h>
#include <linux/interrupt.h>

#include <asm/setup.h>
#include <asm/memory.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
#include <asm/irq.h>

#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>

30 31
#include <asm/arch/aaed2000.h>

32 33
#include "core.h"

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
static void aaed2000_clcd_disable(struct clcd_fb *fb)
{
	AAED_EXT_GPIO &= ~AAED_EGPIO_LCD_PWR_EN;
}

static void aaed2000_clcd_enable(struct clcd_fb *fb)
{
	AAED_EXT_GPIO |= AAED_EGPIO_LCD_PWR_EN;
}

struct aaec2000_clcd_info clcd_info = {
	.enable = aaed2000_clcd_enable,
	.disable = aaed2000_clcd_disable,
	.panel = {
		.mode	= {
			.name		= "Sharp",
			.refresh	= 60,
			.xres		= 640,
			.yres		= 480,
			.pixclock	= 39721,
			.left_margin	= 20,
			.right_margin	= 44,
			.upper_margin	= 21,
			.lower_margin	= 34,
			.hsync_len	= 96,
			.vsync_len	= 2,
			.sync		= 0,
			.vmode	= FB_VMODE_NONINTERLACED,
		},
		.width	= -1,
		.height	= -1,
		.tim2	= TIM2_IVS | TIM2_IHS,
		.cntl	= CNTL_LCDTFT,
		.bpp	= 16,
	},
};

71 72 73 74 75
static void __init aaed2000_init_irq(void)
{
	aaec2000_init_irq();
}

76 77 78 79 80
static void __init aaed2000_init(void)
{
	aaec2000_set_clcd_plat_data(&clcd_info);
}

81
static struct map_desc aaed2000_io_desc[] __initdata = {
82 83 84 85 86 87
	{
		.virtual	= EXT_GPIO_VBASE,
		.pfn            = __phys_to_pfn(EXT_GPIO_PBASE),
		.length         = EXT_GPIO_LENGTH,
		.type           = MT_DEVICE
	},
88 89
};

90 91 92
static void __init aaed2000_map_io(void)
{
	aaec2000_map_io();
93
	iotable_init(aaed2000_io_desc, ARRAY_SIZE(aaed2000_io_desc));
94 95 96
}

MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform")
97 98 99 100 101
	/* Maintainer: Nicolas Bellido Y Ortega */
	.phys_io	= PIO_BASE,
	.io_pg_offst	= ((VIO_BASE) >> 18) & 0xfffc,
	.map_io		= aaed2000_map_io,
	.init_irq	= aaed2000_init_irq,
102
	.timer		= &aaec2000_timer,
103
	.init_machine	= aaed2000_init,
104
MACHINE_END