Adds dm6467 board support.

Signed-off-by: Sudhakar Rajashekhara <[EMAIL PROTECTED]>
---
 arch/arm/mach-davinci/Kconfig               |   17 ++++-
 arch/arm/mach-davinci/Makefile              |    1 +
 arch/arm/mach-davinci/board-dm6467-evm.c    |   99 +++++++++++++++++++++++++++
 arch/arm/mach-davinci/include/mach/common.h |    6 ++
 arch/arm/mach-davinci/serial.c              |    9 ++-
 5 files changed, 130 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/mach-davinci/board-dm6467-evm.c

diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index fd3f8bd..7310cad 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -4,10 +4,17 @@ menu "TI DaVinci Implementations"
 
 comment "DaVinci Core Type"
 
+choice
+       prompt "DaVinci ARCH type"
+       default ARCH_DAVINCI_DM644x
+
 config ARCH_DAVINCI644x
-       default y
        bool "DaVinci 644x based system"
 
+config ARCH_DAVINCI_DM646x
+        bool "DaVinci 646x based system"
+endchoice
+
 comment "DaVinci Board Type"
 
 config MACH_DAVINCI_EVM
@@ -18,6 +25,14 @@ config MACH_DAVINCI_EVM
          Configure this option to specify the whether the board used
          for development is a DaVinci EVM
 
+config MACH_DAVINCI_DM6467_EVM
+       bool "TI DM646x EVM"
+       default n
+       depends on ARCH_DAVINCI_DM646x && !ARCH_DAVINCI_DM644x
+       help
+         Configure this option to specify the whether the board used
+         for development is a DM646x EVM
+
 config DAVINCI_MCBSP
        bool
         prompt "DaVinci McBSP Driver" if SOUND_DAVINCI=n
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index 945ee80..df756db 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -9,4 +9,5 @@ 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
+obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM)  += board-dm6467-evm.o
 obj-$(CONFIG_DAVINCI_MCBSP)            += mcbsp.o
diff --git a/arch/arm/mach-davinci/board-dm6467-evm.c 
b/arch/arm/mach-davinci/board-dm6467-evm.c
new file mode 100644
index 0000000..863a3f8
--- /dev/null
+++ b/arch/arm/mach-davinci/board-dm6467-evm.c
@@ -0,0 +1,99 @@
+/*
+ * TI DaVinci DM6467 EVM board
+ *
+ * Derived from: arch/arm/mach-davinci/board-evm.c
+ * Copyright (C) 2006 Texas Instruments.
+ *
+ * (C) 2007-2008, 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/major.h>
+#include <linux/root_dev.h>
+#include <linux/dma-mapping.h>
+#include <linux/serial.h>
+#include <linux/serial_8250.h>
+
+#include <asm/setup.h>
+#include <linux/io.h>
+#include <asm/mach-types.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+#include <mach/board.h>
+#include <mach/common.h>
+#include <mach/hardware.h>
+#include <mach/psc.h>
+#include <mach/serial.h>
+#include <mach/i2c.h>
+
+/**************************************************************************
+ * Public Functions
+ **************************************************************************/
+static struct platform_device *davinci_evm_devices[] __initdata = {
+};
+
+static struct davinci_uart_config davinci_evm_uart_config __initdata = {
+       .enabled_uarts = (1 << 0),
+};
+
+static struct davinci_board_config_kernel davinci_evm_config[] __initdata = {
+       { DAVINCI_TAG_UART,     &davinci_evm_uart_config },
+};
+
+static void board_init(void)
+{
+       davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN,
+                          DAVINCI_DM646X_LPSC_AEMIF, 1);
+       davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN,
+                          DAVINCI_DM646X_LPSC_GPIO, 1);
+}
+
+static void __init davinci_map_io(void)
+{
+       davinci_map_common_io();
+
+       /* Initialize the DaVinci EVM board settigs */
+       board_init();
+}
+
+static __init void evm_init(void)
+{
+/* TODO FIXME: davinci_gpio_init(); */
+       platform_add_devices(davinci_evm_devices,
+               ARRAY_SIZE(davinci_evm_devices));
+
+       davinci_board_config = davinci_evm_config;
+       davinci_board_config_size = ARRAY_SIZE(davinci_evm_config);
+       davinci_serial_init();
+}
+
+static __init void davinci_dm6467_evm_irq_init(void)
+{
+       davinci_init_common_hw();
+       davinci_irq_init();
+}
+
+MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM6467 EVM")
+       .phys_io      = IO_PHYS,
+       .io_pg_offst  = (io_p2v(IO_PHYS) >> 18) & 0xfffc,
+       .boot_params  = (0x80000100),
+       .map_io       = davinci_map_io,
+       .init_irq     = davinci_dm6467_evm_irq_init,
+       .timer        = &davinci_timer,
+       .init_machine = evm_init,
+MACHINE_END
+
diff --git a/arch/arm/mach-davinci/include/mach/common.h 
b/arch/arm/mach-davinci/include/mach/common.h
index 3f91b8c..ae0113a 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -16,6 +16,12 @@ struct sys_timer;
 
 extern struct sys_timer davinci_timer;
 extern void davinci_serial_init(void);
+extern const u8 *davinci_def_priorities;
+extern void davinci_irq_init(void);
+extern void davinci_psc_config(unsigned int domain, unsigned int id,
+                              char enable);
+extern void __init davinci_init_common_hw(void);
+void __init davinci_map_common_io(void);
 
 /* parameters describe VBUS sourcing for host mode */
 extern void setup_usb(unsigned mA, unsigned potpgt_msec);
diff --git a/arch/arm/mach-davinci/serial.c b/arch/arm/mach-davinci/serial.c
index 68a252c..6aea7ed 100644
--- a/arch/arm/mach-davinci/serial.c
+++ b/arch/arm/mach-davinci/serial.c
@@ -33,6 +33,7 @@
 #include <mach/serial.h>
 #include <mach/irqs.h>
 #include <mach/board.h>
+#include <mach/cpu.h>
 
 #define UART_DAVINCI_PWREMU 0x0c
 
@@ -135,6 +136,11 @@ void __init davinci_serial_init(void)
        for (i = 0; i < DAVINCI_MAX_NR_UARTS; i++) {
                struct plat_serial8250_port *p = serial_platform_data + i;
 
+               if (cpu_is_davinci_dm6467()) {
+                       p->uartclk = 24000000;
+                       p->iotype = UPIO_MEM32;
+               }
+
                if (!(info->enabled_uarts & (1 << i))) {
                        p->membase = 0;
                        p->mapbase = 0;
@@ -148,7 +154,8 @@ void __init davinci_serial_init(void)
                                        __func__, __LINE__, i);
                else {
                        clk_enable(uart_clk);
-                       davinci_serial_reset(p);
+                       if (cpu_is_davinci_dm644x())
+                               davinci_serial_reset(p);
                }
        }
 }
-- 
1.5.4.1

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

Reply via email to