mach-otom.c 2.9 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/* linux/arch/arm/mach-s3c2410/mach-otom.c
 *
 * Copyright (c) 2004 Nex Vision
 *   Guillaume GOURAT <guillaume.gourat@nexvision.fr>
 *
 * 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/kernel.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/timer.h>
#include <linux/init.h>
18
#include <linux/serial_core.h>
19
#include <linux/platform_device.h>
20
#include <linux/io.h>
L
Linus Torvalds 已提交
21 22 23 24 25

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

26
#include <mach/otom-map.h>
L
Linus Torvalds 已提交
27

28
#include <mach/hardware.h>
L
Linus Torvalds 已提交
29 30 31
#include <asm/irq.h>
#include <asm/mach-types.h>

32
#include <plat/regs-serial.h>
33
#include <mach/regs-gpio.h>
L
Linus Torvalds 已提交
34

35
#include <plat/s3c2410.h>
36
#include <plat/clock.h>
37
#include <plat/devs.h>
38
#include <plat/iic.h>
39
#include <plat/cpu.h>
L
Linus Torvalds 已提交
40 41 42 43 44 45 46 47 48 49

static struct map_desc otom11_iodesc[] __initdata = {
  /* Device area */
	{ (u32)OTOM_VA_CS8900A_BASE, OTOM_PA_CS8900A_BASE, SZ_16M, MT_DEVICE },
};

#define UCON S3C2410_UCON_DEFAULT
#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB
#define UFCON S3C2410_UFCON_RXTRIG12 | S3C2410_UFCON_FIFOMODE

50
static struct s3c2410_uartcfg otom11_uartcfgs[] __initdata = {
L
Linus Torvalds 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
	[0] = {
		.hwport	     = 0,
		.flags	     = 0,
		.ucon	     = UCON,
		.ulcon	     = ULCON,
		.ufcon	     = UFCON,
	},
	[1] = {
		.hwport	     = 1,
		.flags	     = 0,
		.ucon	     = UCON,
		.ulcon	     = ULCON,
		.ufcon	     = UFCON,
	},
	/* port 2 is not actually used */
	[2] = {
		.hwport	     = 2,
		.flags	     = 0,
		.ucon	     = UCON,
		.ulcon	     = ULCON,
		.ufcon	     = UFCON,
	}
};

/* NOR Flash on NexVision OTOM board */

static struct resource otom_nor_resource[] = {
	[0] = {
		.start = S3C2410_CS0,
		.end   = S3C2410_CS0 + (4*1024*1024) - 1,
		.flags = IORESOURCE_MEM,
	}
};

static struct platform_device otom_device_nor = {
	.name		= "mtd-flash",
	.id		= -1,
	.num_resources	= ARRAY_SIZE(otom_nor_resource),
	.resource	= otom_nor_resource,
};

/* Standard OTOM devices */

static struct platform_device *otom11_devices[] __initdata = {
95
	&s3c_device_ohci,
L
Linus Torvalds 已提交
96 97
	&s3c_device_lcd,
	&s3c_device_wdt,
98
	&s3c_device_i2c0,
L
Linus Torvalds 已提交
99 100 101 102 103
	&s3c_device_iis,
 	&s3c_device_rtc,
	&otom_device_nor,
};

104
static void __init otom11_map_io(void)
L
Linus Torvalds 已提交
105 106 107 108 109 110
{
	s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc));
	s3c24xx_init_clocks(0);
	s3c24xx_init_uarts(otom11_uartcfgs, ARRAY_SIZE(otom11_uartcfgs));
}

111 112
static void __init otom11_init(void)
{
113
	s3c_i2c0_set_platdata(NULL);
114 115
	platform_add_devices(otom11_devices, ARRAY_SIZE(otom11_devices));
}
L
Linus Torvalds 已提交
116 117

MACHINE_START(OTOM, "Nex Vision - Otom 1.1")
118 119 120 121
	/* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */
	.phys_io	= S3C2410_PA_UART,
	.io_pg_offst	= (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
	.boot_params	= S3C2410_SDRAM_PA + 0x100,
L
Linus Torvalds 已提交
122
	.map_io		= otom11_map_io,
123
	.init_machine	= otom11_init,
L
Linus Torvalds 已提交
124 125 126
	.init_irq	= s3c24xx_init_irq,
	.timer		= &s3c24xx_timer,
MACHINE_END