This patch adds the DM355 board support.

Signed-off-by: Hui Geng <[EMAIL PROTECTED]>
---
 arch/arm/mach-davinci/Kconfig           |   11 ++
 arch/arm/mach-davinci/Makefile          |    1 +
 arch/arm/mach-davinci/board-dm355-evm.c |  221 +++++++++++++++++++++++++++++++
 include/asm-arm/arch-davinci/common.h   |    5 +
 4 files changed, 238 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/mach-davinci/board-dm355-evm.c

diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index 432f529..b5b675d 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -11,6 +11,9 @@ choice
 config ARCH_DAVINCI644x
        bool "DaVinci 644x based system"
 
+config ARCH_DAVINCI_DM355
+       bool "DaVinci DM355 based system"
+
 config ARCH_DAVINCI_DM646x
         bool "DaVinci 646x based system"
 endchoice
@@ -26,6 +29,14 @@ config MACH_DAVINCI_EVM
          Configure this option to specify the whether the board used
          for development is a DaVinci EVM
 
+config MACH_DAVINCI_DM355_EVM
+       bool "TI DM355 EVM"
+       default n
+       depends on ARCH_DAVINCI_DM355
+       help
+         Configure this option to specify the whether the board used
+         for development is a DM355 EVM
+
 config MACH_DAVINCI_DM6467_EVM
         bool "TI DM646x EVM"
         default n
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index 4fe4836..a183836 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -9,6 +9,7 @@ obj-y                   := time.o irq.o clock.o serial.o io.o 
id.o psc.o \
 
 # Board specific
 obj-$(CONFIG_MACH_DAVINCI_EVM)         += board-evm.o i2c-emac.o
+obj-$(CONFIG_MACH_DAVINCI_DM355_EVM)  += board-dm355-evm.o
 obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM)  += board-dm6467-evm.o i2c-emac.o
 obj-$(CONFIG_DAVINCI_MCBSP)            += mcbsp.o
 obj-$(CONFIG_DAVINCI_I2C_EXPANDER)     += i2c-client.o
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c 
b/arch/arm/mach-davinci/board-dm355-evm.c
new file mode 100644
index 0000000..d158ad3
--- /dev/null
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -0,0 +1,221 @@
+/*
+ * TI DaVinci DM355 EVM board
+ *
+ * Derived from: arch/arm/mach-davinci/board-evm.c
+ * Copyright (C) 2006 Texas Instruments.
+ *
+ * 2007 (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.
+ */
+
+/**************************************************************************
+ * Included Files
+ **************************************************************************/
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/irq.h>
+#include <linux/major.h>
+#include <linux/root_dev.h>
+#include <linux/dma-mapping.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/nand.h>
+#include <linux/serial.h>
+#include <linux/serial_8250.h>
+#include <linux/io.h>
+
+#include <asm/setup.h>
+#include <asm/mach-types.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+#include <asm/arch/irqs.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/edma.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/nand.h>
+#include "clock.h"
+#include <asm/arch/cpu.h>
+#include <asm/arch/common.h>
+#include <asm/arch/clock.h>
+
+/**************************************************************************
+ * Definitions
+ **************************************************************************/
+static struct plat_serial8250_port serial_platform_data[] = {
+       {
+               .membase = (char *) IO_ADDRESS(DAVINCI_UART0_BASE),
+               .mapbase = (unsigned long) DAVINCI_UART0_BASE,
+               .irq = IRQ_UARTINT0,
+               .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+               .iotype = UPIO_MEM,
+               .regshift = 2,
+               .uartclk = 24000000,
+       },
+       {
+               .membase = (char *) IO_ADDRESS(DAVINCI_UART1_BASE),
+               .mapbase = (unsigned long) DAVINCI_UART1_BASE,
+               .irq = IRQ_UARTINT1,
+               .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+               .iotype = UPIO_MEM,
+               .regshift = 2,
+               .uartclk = 24000000,
+       },
+       {
+               .membase = (char *) IO_ADDRESS(DM355_UART2_BASE),
+               .mapbase = (unsigned long) DM355_UART2_BASE,
+               .irq = IRQ_DM355_UARTINT2,
+               .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+               .iotype = UPIO_MEM,
+               .regshift = 2,
+               .uartclk = 24000000,
+       },
+       {
+               .flags = 0
+       },
+};
+
+static struct platform_device serial_device = {
+       .name = "serial8250",
+       .id = 0,
+       .dev = {
+                       .platform_data = serial_platform_data,
+               },
+};
+
+/**************************************************************************
+ * Public Functions
+ **************************************************************************/
+int cpu_type(void)
+{
+       return MACH_TYPE_DAVINCI_DM355_EVM;
+}
+EXPORT_SYMBOL(cpu_type);
+
+void davinci_serial_init(struct platform_device *pdev);
+
+static struct platform_device *dm355_evm_devices[] __initdata =
+{
+       &serial_device,
+};
+
+/* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */
+static const u8 dm355_default_priorities[DAVINCI_N_AINTC_IRQ] = {
+       [IRQ_DM355_CCDC_VDINT0]         = 2,
+       [IRQ_DM355_CCDC_VDINT1]         = 6,
+       [IRQ_DM355_CCDC_VDINT2]         = 6,
+       [IRQ_DM355_IPIPE_HST]           = 6,
+       [IRQ_DM355_H3AINT]              = 6,
+       [IRQ_DM355_IPIPE_SDR]           = 6,
+       [IRQ_DM355_IPIPEIFINT]          = 6,
+       [IRQ_DM355_OSDINT]              = 7,
+       [IRQ_DM355_VENCINT]             = 6,
+       [IRQ_ASQINT]                    = 6,
+       [IRQ_IMXINT]                    = 6,
+       [IRQ_DM644X_VLCDINT]            = 6,
+       [IRQ_USBINT]                    = 4,
+       [IRQ_DM355_RTOINT]              = 4,
+       [IRQ_DM355_UARTINT2]            = 7,
+       [IRQ_DM355_TINT6]               = 7,
+       [IRQ_CCINT0]                    = 5,    /* dma */
+       [IRQ_CCERRINT]                  = 5,    /* dma */
+       [IRQ_TCERRINT0]                 = 5,    /* dma */
+       [IRQ_TCERRINT]                  = 5,    /* dma */
+       [IRQ_PSCIN]                     = 7,
+       [IRQ_DM355_SPINT2_1]            = 7,
+       [IRQ_DM355_TINT7]               = 4,
+       [IRQ_DM355_SDIOINT0]            = 7,
+       [IRQ_MBXINT]                    = 7,
+       [IRQ_MBRINT]                    = 7,
+       [IRQ_MMCINT]                    = 7,
+       [IRQ_DM355_MMCINT1]             = 7,
+       [IRQ_DM355_PWMINT3]             = 7,
+       [IRQ_DDRINT]                    = 7,
+       [IRQ_AEMIFINT]                  = 7,
+       [IRQ_DM355_SDIOINT1]            = 4,
+       [IRQ_TINT0_TINT12]              = 2,    /* clockevent */
+       [IRQ_TINT0_TINT34]              = 2,    /* clocksource */
+       [IRQ_TINT1_TINT12]              = 7,    /* DSP timer */
+       [IRQ_TINT1_TINT34]              = 7,    /* system tick */
+       [IRQ_PWMINT0]                   = 7,
+       [IRQ_PWMINT1]                   = 7,
+       [IRQ_PWMINT2]                   = 7,
+       [IRQ_I2C]                       = 3,
+       [IRQ_UARTINT0]                  = 3,
+       [IRQ_UARTINT1]                  = 3,
+       [IRQ_DM355_SPINT0_0]            = 3,
+       [IRQ_DM355_SPINT0_1]            = 3,
+       [IRQ_DM355_GPIO0]               = 3,
+       [IRQ_DM355_GPIO1]               = 7,
+       [IRQ_DM355_GPIO2]               = 4,
+       [IRQ_DM355_GPIO3]               = 4,
+       [IRQ_DM355_GPIO4]               = 7,
+       [IRQ_DM355_GPIO5]               = 7,
+       [IRQ_DM355_GPIO6]               = 7,
+       [IRQ_DM355_GPIO7]               = 7,
+       [IRQ_DM355_GPIO8]               = 7,
+       [IRQ_DM355_GPIO9]               = 7,
+       [IRQ_DM355_GPIOBNK0]            = 7,
+       [IRQ_DM355_GPIOBNK1]            = 7,
+       [IRQ_DM355_GPIOBNK2]            = 7,
+       [IRQ_DM355_GPIOBNK3]            = 7,
+       [IRQ_DM355_GPIOBNK4]            = 7,
+       [IRQ_DM355_GPIOBNK5]            = 7,
+       [IRQ_DM355_GPIOBNK6]            = 7,
+       [IRQ_COMMTX]                    = 7,
+       [IRQ_COMMRX]                    = 7,
+       [IRQ_EMUINT]                    = 7,
+};
+
+extern void davinci_psc_config(unsigned int domain, unsigned int id,
+                                       char enable);
+
+static void board_init(void)
+{
+       davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_GPIO, 1);
+       davinci_serial_init(&serial_device);
+}
+
+extern const u8 *davinci_def_priorities;
+
+static void __init davinci_map_io(void)
+{
+       davinci_def_priorities = dm355_default_priorities;
+       davinci_map_common_io();
+       davinci_init_common_hw();
+}
+
+static __init void dm355_evm_init(void)
+{
+       /* Board-specific initialization */
+       board_init();
+
+/* TODO FIXME: davinci_gpio_init(); */
+
+       platform_add_devices(dm355_evm_devices,
+               ARRAY_SIZE(dm355_evm_devices));
+
+}
+
+static __init void davinci_dm355_evm_irq_init(void)
+{
+       davinci_irq_init();
+}
+
+MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
+       /* Maintainer: MontaVista Software <[EMAIL PROTECTED]> */
+       .phys_io      = IO_PHYS,
+       .io_pg_offst  = (io_p2v(IO_PHYS) >> 18) & 0xfffc,
+       .boot_params  = (DAVINCI_DDR_BASE + 0x100),
+       .map_io       = davinci_map_io,
+       .init_irq     = davinci_dm355_evm_irq_init,
+       .timer        = &davinci_timer,
+       .init_machine = dm355_evm_init,
+MACHINE_END
diff --git a/include/asm-arm/arch-davinci/common.h 
b/include/asm-arm/arch-davinci/common.h
index d1aafb7..df1ff43 100644
--- a/include/asm-arm/arch-davinci/common.h
+++ b/include/asm-arm/arch-davinci/common.h
@@ -17,4 +17,9 @@ struct sys_timer;
 extern struct sys_timer davinci_timer;
 extern void davinci_serial_init(struct platform_device *pdev);
 
+void __init davinci_map_common_io(void);
+void __init davinci_init_common_hw(void);
+
+void __init davinci_irq_init(void);
+
 #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */
-- 
1.5.4.3

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to