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>
This commit is contained in:
Родитель
e1a8d7e2ea
Коммит
0fbc559215
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -101,6 +101,13 @@ config MACH_DAVINCI_DA830_EVM
|
|||
help
|
||||
Say Y here to select the TI DA830/OMAP-L137 Evaluation Module.
|
||||
|
||||
config MACH_DAVINCI_DA850_EVM
|
||||
bool "TI DA850/OMAP-L138 Reference Platform"
|
||||
default ARCH_DAVINCI_DA850
|
||||
depends on ARCH_DAVINCI_DA850
|
||||
help
|
||||
Say Y here to select the TI DA850/OMAP-L138 Evaluation Module.
|
||||
|
||||
config DAVINCI_MUX
|
||||
bool "DAVINCI multiplexing support"
|
||||
depends on ARCH_DAVINCI
|
||||
|
|
|
@ -28,3 +28,4 @@ obj-$(CONFIG_MACH_DM355_LEOPARD) += board-dm355-leopard.o
|
|||
obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM) += board-dm646x-evm.o
|
||||
obj-$(CONFIG_MACH_DAVINCI_DM365_EVM) += board-dm365-evm.o
|
||||
obj-$(CONFIG_MACH_DAVINCI_DA830_EVM) += board-da830-evm.o
|
||||
obj-$(CONFIG_MACH_DAVINCI_DA850_EVM) += board-da850-evm.o
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
* TI DA850/OMAP-L138 EVM board
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* Derived from: arch/arm/mach-davinci/board-da830-evm.c
|
||||
* Original Copyrights follow:
|
||||
*
|
||||
* 2007, 2009 (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.
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/i2c/at24.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include <mach/common.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/cp_intc.h>
|
||||
#include <mach/da8xx.h>
|
||||
|
||||
static struct davinci_i2c_platform_data da850_evm_i2c_0_pdata = {
|
||||
.bus_freq = 100, /* kHz */
|
||||
.bus_delay = 0, /* usec */
|
||||
};
|
||||
|
||||
static struct davinci_uart_config da850_evm_uart_config __initdata = {
|
||||
.enabled_uarts = 0x7,
|
||||
};
|
||||
|
||||
static __init void da850_evm_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = da8xx_register_edma();
|
||||
if (ret)
|
||||
pr_warning("da850_evm_init: edma registration failed: %d\n",
|
||||
ret);
|
||||
|
||||
ret = da8xx_pinmux_setup(da850_i2c0_pins);
|
||||
if (ret)
|
||||
pr_warning("da850_evm_init: i2c0 mux setup failed: %d\n",
|
||||
ret);
|
||||
|
||||
ret = da8xx_register_i2c(0, &da850_evm_i2c_0_pdata);
|
||||
if (ret)
|
||||
pr_warning("da850_evm_init: i2c0 registration failed: %d\n",
|
||||
ret);
|
||||
|
||||
ret = da8xx_register_watchdog();
|
||||
if (ret)
|
||||
pr_warning("da830_evm_init: watchdog registration failed: %d\n",
|
||||
ret);
|
||||
|
||||
davinci_serial_init(&da850_evm_uart_config);
|
||||
|
||||
/*
|
||||
* shut down uart 0 and 1; they are not used on the board and
|
||||
* accessing them causes endless "too much work in irq53" messages
|
||||
* with arago fs
|
||||
*/
|
||||
__raw_writel(0, IO_ADDRESS(DA8XX_UART1_BASE) + 0x30);
|
||||
__raw_writel(0, IO_ADDRESS(DA8XX_UART0_BASE) + 0x30);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_8250_CONSOLE
|
||||
static int __init da850_evm_console_init(void)
|
||||
{
|
||||
return add_preferred_console("ttyS", 2, "115200");
|
||||
}
|
||||
console_initcall(da850_evm_console_init);
|
||||
#endif
|
||||
|
||||
static __init void da850_evm_irq_init(void)
|
||||
{
|
||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||
|
||||
cp_intc_init((void __iomem *)DA8XX_CP_INTC_VIRT, DA850_N_CP_INTC_IRQ,
|
||||
soc_info->intc_irq_prios);
|
||||
}
|
||||
|
||||
static void __init da850_evm_map_io(void)
|
||||
{
|
||||
da850_init();
|
||||
}
|
||||
|
||||
MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138 EVM")
|
||||
.phys_io = IO_PHYS,
|
||||
.io_pg_offst = (__IO_ADDRESS(IO_PHYS) >> 18) & 0xfffc,
|
||||
.boot_params = (DA8XX_DDR_BASE + 0x100),
|
||||
.map_io = da850_evm_map_io,
|
||||
.init_irq = da850_evm_irq_init,
|
||||
.timer = &davinci_timer,
|
||||
.init_machine = da850_evm_init,
|
||||
MACHINE_END
|
|
@ -26,7 +26,8 @@
|
|||
movne \rx, #0xfe000000 @ virtual base
|
||||
#if defined(CONFIG_ARCH_DAVINCI_DA8XX) && defined(CONFIG_ARCH_DAVINCI_DMx)
|
||||
#error Cannot enable DaVinci and DA8XX platforms concurrently
|
||||
#elif defined(CONFIG_MACH_DAVINCI_DA830_EVM)
|
||||
#elif defined(CONFIG_MACH_DAVINCI_DA830_EVM) || \
|
||||
defined(CONFIG_MACH_DAVINCI_DA850_EVM)
|
||||
orr \rx, \rx, #0x00d00000 @ physical base address
|
||||
orr \rx, \rx, #0x0000d000 @ of UART 2
|
||||
#else
|
||||
|
|
|
@ -21,7 +21,8 @@ static u32 *uart;
|
|||
|
||||
static u32 *get_uart_base(void)
|
||||
{
|
||||
if (__machine_arch_type == MACH_TYPE_DAVINCI_DA830_EVM)
|
||||
if (__machine_arch_type == MACH_TYPE_DAVINCI_DA830_EVM ||
|
||||
__machine_arch_type == MACH_TYPE_DAVINCI_DA850_EVM)
|
||||
return (u32 *)DA8XX_UART2_BASE;
|
||||
else
|
||||
return (u32 *)DAVINCI_UART0_BASE;
|
||||
|
|
Загрузка…
Ссылка в новой задаче