mx1ads.c 2.5 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*
 * arch/arm/mach-imx/mx1ads.c
 *
 * Initially based on:
 *	linux-2.6.7-imx/arch/arm/mach-imx/scb9328.c
 *	Copyright (c) 2004 Sascha Hauer <sascha@saschahauer.de>
 *
 * 2004 (c) MontaVista Software, Inc.
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2. This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 */

#include <linux/device.h>
#include <linux/init.h>
17
#include <linux/platform_device.h>
L
Linus Torvalds 已提交
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 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
#include <asm/system.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/pgtable.h>
#include <asm/page.h>

#include <asm/mach/map.h>
#include <asm/mach-types.h>

#include <asm/mach/arch.h>
#include <linux/interrupt.h>
#include "generic.h"
#include <asm/serial.h>

static struct resource mx1ads_resources[] = {
	[0] = {
		.start	= IMX_CS4_VIRT,
		.end	= IMX_CS4_VIRT + 16,
		.flags	= IORESOURCE_MEM,
	},
	[1] = {
		.start	= 13,
		.end	= 13,
		.flags	= IORESOURCE_IRQ,
	},
};

static struct platform_device mx1ads_device = {
	.name		= "mx1ads",
	.num_resources	= ARRAY_SIZE(mx1ads_resources),
	.resource	= mx1ads_resources,
};

static struct platform_device *devices[] __initdata = {
	&mx1ads_device,
};

static void __init
mx1ads_init(void)
{
#ifdef CONFIG_LEDS
59
	imx_gpio_mode(GPIO_PORTA | GPIO_OUT | 2);
L
Linus Torvalds 已提交
60 61 62 63 64
#endif
	platform_add_devices(devices, ARRAY_SIZE(devices));
}

static struct map_desc mx1ads_io_desc[] __initdata = {
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 95
	{
		.virtual	= IMX_CS0_VIRT,
		.pfn		= __phys_to_pfn(IMX_CS0_PHYS),
		.length		= IMX_CS0_SIZE,
		.type		= MT_DEVICE
	}, {
		.virtual	= IMX_CS1_VIRT,
		.pfn		= __phys_to_pfn(IMX_CS1_PHYS),
		.length		= IMX_CS1_SIZE,
		.type		= MT_DEVICE
	}, {
		.virtual	= IMX_CS2_VIRT,
		.pfn		= __phys_to_pfn(IMX_CS2_PHYS),
		.length		= IMX_CS2_SIZE,
		.type		= MT_DEVICE
	}, {
		.virtual	= IMX_CS3_VIRT,
		.pfn		= __phys_to_pfn(IMX_CS3_PHYS),
		.length		= IMX_CS3_SIZE,
		.type		= MT_DEVICE
	}, {
		.virtual	= IMX_CS4_VIRT,
		.pfn		= __phys_to_pfn(IMX_CS4_PHYS),
		.length		= IMX_CS4_SIZE,
		.type		= MT_DEVICE
	}, {
		.virtual	= IMX_CS5_VIRT,
		.pfn		= __phys_to_pfn(IMX_CS5_PHYS),
		.length		= IMX_CS5_SIZE,
		.type		= MT_DEVICE
	}
L
Linus Torvalds 已提交
96 97 98 99 100 101 102 103 104 105
};

static void __init
mx1ads_map_io(void)
{
	imx_map_io();
	iotable_init(mx1ads_io_desc, ARRAY_SIZE(mx1ads_io_desc));
}

MACHINE_START(MX1ADS, "Motorola MX1ADS")
106 107 108 109 110 111 112
	/* Maintainer: Sascha Hauer, Pengutronix */
	.phys_ram	= 0x08000000,
	.phys_io	= 0x00200000,
	.io_pg_offst	= ((0xe0200000) >> 18) & 0xfffc,
	.boot_params	= 0x08000100,
	.map_io		= mx1ads_map_io,
	.init_irq	= imx_init_irq,
L
Linus Torvalds 已提交
113
	.timer		= &imx_timer,
114
	.init_machine	= mx1ads_init,
L
Linus Torvalds 已提交
115
MACHINE_END