aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci
diff options
context:
space:
mode:
authorSudhakar Rajashekhara <sudhakar.raj@ti.com>2009-07-16 06:42:18 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2009-08-26 04:55:45 -0400
commit0fbc5592158db4e1ca2037178e1ea6733ccc6f61 (patch)
tree6c066cdaf81b767af431b443d7ad57739868a49c /arch/arm/mach-davinci
parente1a8d7e2ea7c971f750b1adf0e98c3c8ed002623 (diff)
davinci: Add support for DA850/OMAP-L138 EVM board
Add support for the DA850/OMAP-L138 Evaluation Module (EVM) from TI. The EVM has User Interface (UI) card which contains various devices. This UI card can be connected to the base board. Support for all the devices on the UI card and ones on the EVM will be added in subsequent patches. The EVM schematics are not available publicly yet; but should be available soon. A new defconfig for this board has been added mainly because the DA830/OMAP-L137 defconfig forces writethrough cache mode which is not required on DA850/OMAP-L138. This patch has been boot tested on DA850/OMAP-L138 EVM using ramdisk as filesystem. Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci')
-rw-r--r--arch/arm/mach-davinci/Kconfig7
-rw-r--r--arch/arm/mach-davinci/Makefile1
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c102
-rw-r--r--arch/arm/mach-davinci/include/mach/debug-macro.S3
-rw-r--r--arch/arm/mach-davinci/include/mach/uncompress.h3
5 files changed, 114 insertions, 2 deletions
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index 1ee438ea9798..40866c643f13 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -101,6 +101,13 @@ config MACH_DAVINCI_DA830_EVM
101 help 101 help
102 Say Y here to select the TI DA830/OMAP-L137 Evaluation Module. 102 Say Y here to select the TI DA830/OMAP-L137 Evaluation Module.
103 103
104config MACH_DAVINCI_DA850_EVM
105 bool "TI DA850/OMAP-L138 Reference Platform"
106 default ARCH_DAVINCI_DA850
107 depends on ARCH_DAVINCI_DA850
108 help
109 Say Y here to select the TI DA850/OMAP-L138 Evaluation Module.
110
104config DAVINCI_MUX 111config DAVINCI_MUX
105 bool "DAVINCI multiplexing support" 112 bool "DAVINCI multiplexing support"
106 depends on ARCH_DAVINCI 113 depends on ARCH_DAVINCI
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index 5f8a661c35b3..2e11e847313b 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -28,3 +28,4 @@ obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o
28obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o 28obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o
29obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o 29obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o
30obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o 30obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o
31obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
new file mode 100644
index 000000000000..eaa1fc1bc5f5
--- /dev/null
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -0,0 +1,102 @@
1/*
2 * TI DA850/OMAP-L138 EVM board
3 *
4 * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * Derived from: arch/arm/mach-davinci/board-da830-evm.c
7 * Original Copyrights follow:
8 *
9 * 2007, 2009 (c) MontaVista Software, Inc. This file is licensed under
10 * the terms of the GNU General Public License version 2. This program
11 * is licensed "as is" without any warranty of any kind, whether express
12 * or implied.
13 */
14#include <linux/kernel.h>
15#include <linux/module.h>
16#include <linux/init.h>
17#include <linux/console.h>
18#include <linux/i2c.h>
19#include <linux/i2c/at24.h>
20
21#include <asm/mach-types.h>
22#include <asm/mach/arch.h>
23
24#include <mach/common.h>
25#include <mach/irqs.h>
26#include <mach/cp_intc.h>
27#include <mach/da8xx.h>
28
29static struct davinci_i2c_platform_data da850_evm_i2c_0_pdata = {
30 .bus_freq = 100, /* kHz */
31 .bus_delay = 0, /* usec */
32};
33
34static struct davinci_uart_config da850_evm_uart_config __initdata = {
35 .enabled_uarts = 0x7,
36};
37
38static __init void da850_evm_init(void)
39{
40 int ret;
41
42 ret = da8xx_register_edma();
43 if (ret)
44 pr_warning("da850_evm_init: edma registration failed: %d\n",
45 ret);
46
47 ret = da8xx_pinmux_setup(da850_i2c0_pins);
48 if (ret)
49 pr_warning("da850_evm_init: i2c0 mux setup failed: %d\n",
50 ret);
51
52 ret = da8xx_register_i2c(0, &da850_evm_i2c_0_pdata);
53 if (ret)
54 pr_warning("da850_evm_init: i2c0 registration failed: %d\n",
55 ret);
56
57 ret = da8xx_register_watchdog();
58 if (ret)
59 pr_warning("da830_evm_init: watchdog registration failed: %d\n",
60 ret);
61
62 davinci_serial_init(&da850_evm_uart_config);
63
64 /*
65 * shut down uart 0 and 1; they are not used on the board and
66 * accessing them causes endless "too much work in irq53" messages
67 * with arago fs
68 */
69 __raw_writel(0, IO_ADDRESS(DA8XX_UART1_BASE) + 0x30);
70 __raw_writel(0, IO_ADDRESS(DA8XX_UART0_BASE) + 0x30);
71}
72
73#ifdef CONFIG_SERIAL_8250_CONSOLE
74static int __init da850_evm_console_init(void)
75{
76 return add_preferred_console("ttyS", 2, "115200");
77}
78console_initcall(da850_evm_console_init);
79#endif
80
81static __init void da850_evm_irq_init(void)
82{
83 struct davinci_soc_info *soc_info = &davinci_soc_info;
84
85 cp_intc_init((void __iomem *)DA8XX_CP_INTC_VIRT, DA850_N_CP_INTC_IRQ,
86 soc_info->intc_irq_prios);
87}
88
89static void __init da850_evm_map_io(void)
90{
91 da850_init();
92}
93
94MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138 EVM")
95 .phys_io = IO_PHYS,
96 .io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc,
97 .boot_params = (DA8XX_DDR_BASE + 0x100),
98 .map_io = da850_evm_map_io,
99 .init_irq = da850_evm_irq_init,
100 .timer = &davinci_timer,
101 .init_machine = da850_evm_init,
102MACHINE_END
diff --git a/arch/arm/mach-davinci/include/mach/debug-macro.S b/arch/arm/mach-davinci/include/mach/debug-macro.S
index 9d16277b233f..17ab5236da66 100644
--- a/arch/arm/mach-davinci/include/mach/debug-macro.S
+++ b/arch/arm/mach-davinci/include/mach/debug-macro.S
@@ -26,7 +26,8 @@
26 movne \rx, #0xfe000000 @ virtual base 26 movne \rx, #0xfe000000 @ virtual base
27#if defined(CONFIG_ARCH_DAVINCI_DA8XX) && defined(CONFIG_ARCH_DAVINCI_DMx) 27#if defined(CONFIG_ARCH_DAVINCI_DA8XX) && defined(CONFIG_ARCH_DAVINCI_DMx)
28#error Cannot enable DaVinci and DA8XX platforms concurrently 28#error Cannot enable DaVinci and DA8XX platforms concurrently
29#elif defined(CONFIG_MACH_DAVINCI_DA830_EVM) 29#elif defined(CONFIG_MACH_DAVINCI_DA830_EVM) || \
30 defined(CONFIG_MACH_DAVINCI_DA850_EVM)
30 orr \rx, \rx, #0x00d00000 @ physical base address 31 orr \rx, \rx, #0x00d00000 @ physical base address
31 orr \rx, \rx, #0x0000d000 @ of UART 2 32 orr \rx, \rx, #0x0000d000 @ of UART 2
32#else 33#else
diff --git a/arch/arm/mach-davinci/include/mach/uncompress.h b/arch/arm/mach-davinci/include/mach/uncompress.h
index 46a0c3171e35..33796b4db17f 100644
--- a/arch/arm/mach-davinci/include/mach/uncompress.h
+++ b/arch/arm/mach-davinci/include/mach/uncompress.h
@@ -21,7 +21,8 @@ static u32 *uart;
21 21
22static u32 *get_uart_base(void) 22static u32 *get_uart_base(void)
23{ 23{
24 if (__machine_arch_type == MACH_TYPE_DAVINCI_DA830_EVM) 24 if (__machine_arch_type == MACH_TYPE_DAVINCI_DA830_EVM ||
25 __machine_arch_type == MACH_TYPE_DAVINCI_DA850_EVM)
25 return (u32 *)DA8XX_UART2_BASE; 26 return (u32 *)DA8XX_UART2_BASE;
26 else 27 else
27 return (u32 *)DAVINCI_UART0_BASE; 28 return (u32 *)DAVINCI_UART0_BASE;