[ARM] pxa: add base support for pxa910-based TavorEVB
authorEric Miao <eric.miao@marvell.com>
Fri, 20 Mar 2009 05:27:30 +0000 (13:27 +0800)
committerEric Miao <eric.miao@marvell.com>
Mon, 23 Mar 2009 02:11:38 +0000 (10:11 +0800)
Signed-off-by: Bin Yang <bin.yang@marvell.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
arch/arm/mach-mmp/Kconfig
arch/arm/mach-mmp/Makefile
arch/arm/mach-mmp/tavorevb.c [new file with mode: 0644]

index ba2e377..e77db55 100644 (file)
@@ -16,6 +16,13 @@ config MACH_ZYLONITE2
          Say 'Y' here if you want to support the Marvell PXA168-based
          Zylonite2 Development Board.
 
+config MACH_TAVOREVB
+       bool "Marvell's PXA910 TavorEVB Development Board"
+       select CPU_PXA910
+       help
+         Say 'Y' here if you want to support the Marvell PXA910-based
+         TavorEVB Development Board.
+
 endmenu
 
 config CPU_PXA168
index 93d2bc7..542aafa 100644 (file)
@@ -11,3 +11,4 @@ obj-$(CONFIG_CPU_PXA910)      += pxa910.o
 # board support
 obj-$(CONFIG_MACH_ASPENITE)    += aspenite.o
 obj-$(CONFIG_MACH_ZYLONITE2)   += aspenite.o
+obj-$(CONFIG_MACH_TAVOREVB)    += tavorevb.o
diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c
new file mode 100644 (file)
index 0000000..0e0c922
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ *  linux/arch/arm/mach-mmp/tavorevb.c
+ *
+ *  Support for the Marvell PXA910-based TavorEVB Development Platform.
+ *
+ *  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
+ *  publishhed by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <linux/smc91x.h>
+
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/addr-map.h>
+#include <mach/mfp-pxa910.h>
+#include <mach/pxa910.h>
+#include <mach/gpio.h>
+
+#include "common.h"
+
+static unsigned long tavorevb_pin_config[] __initdata = {
+       /* UART2 */
+       GPIO47_UART2_RXD,
+       GPIO48_UART2_TXD,
+
+       /* SMC */
+       SM_nCS0_nCS0,
+       SM_ADV_SM_ADV,
+       SM_SCLK_SM_SCLK,
+       SM_SCLK_SM_SCLK,
+       SM_BE0_SM_BE0,
+       SM_BE1_SM_BE1,
+
+       /* DFI */
+       DF_IO0_ND_IO0,
+       DF_IO1_ND_IO1,
+       DF_IO2_ND_IO2,
+       DF_IO3_ND_IO3,
+       DF_IO4_ND_IO4,
+       DF_IO5_ND_IO5,
+       DF_IO6_ND_IO6,
+       DF_IO7_ND_IO7,
+       DF_IO8_ND_IO8,
+       DF_IO9_ND_IO9,
+       DF_IO10_ND_IO10,
+       DF_IO11_ND_IO11,
+       DF_IO12_ND_IO12,
+       DF_IO13_ND_IO13,
+       DF_IO14_ND_IO14,
+       DF_IO15_ND_IO15,
+       DF_nCS0_SM_nCS2_nCS0,
+       DF_ALE_SM_WEn_ND_ALE,
+       DF_CLE_SM_OEn_ND_CLE,
+       DF_WEn_DF_WEn,
+       DF_REn_DF_REn,
+       DF_RDY0_DF_RDY0,
+};
+
+static struct smc91x_platdata tavorevb_smc91x_info = {
+       .flags  = SMC91X_USE_16BIT | SMC91X_NOWAIT,
+};
+
+static struct resource smc91x_resources[] = {
+       [0] = {
+               .start  = SMC_CS1_PHYS_BASE + 0x300,
+               .end    = SMC_CS1_PHYS_BASE + 0xfffff,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = gpio_to_irq(80),
+               .end    = gpio_to_irq(80),
+               .flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
+       }
+};
+
+static struct platform_device smc91x_device = {
+       .name           = "smc91x",
+       .id             = 0,
+       .dev            = {
+               .platform_data = &tavorevb_smc91x_info,
+       },
+       .num_resources  = ARRAY_SIZE(smc91x_resources),
+       .resource       = smc91x_resources,
+};
+
+static void __init tavorevb_init(void)
+{
+       mfp_config(ARRAY_AND_SIZE(tavorevb_pin_config));
+
+       /* on-chip devices */
+       pxa910_add_uart(1);
+
+       /* off-chip devices */
+       platform_device_register(&smc91x_device);
+}
+
+MACHINE_START(TAVOREVB, "PXA910 Evaluation Board (aka TavorEVB)")
+       .phys_io        = APB_PHYS_BASE,
+       .boot_params    = 0x00000100,
+       .io_pg_offst    = (APB_VIRT_BASE >> 18) & 0xfffc,
+       .map_io         = pxa_map_io,
+       .init_irq       = pxa910_init_irq,
+       .timer          = &pxa910_timer,
+       .init_machine   = tavorevb_init,
+MACHINE_END