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