diff options
| -rw-r--r-- | MAINTAINERS | 4 | ||||
| -rwxr-xr-x | MAKEALL | 1 | ||||
| -rw-r--r-- | Makefile | 5 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-davinci/hardware.h | 1 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/Makefile (renamed from board/davinci/da830evm/Makefile) | 6 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/common.c | 55 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/common.h | 30 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/config.mk (renamed from board/davinci/da830evm/config.mk) | 0 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/da830evm.c (renamed from board/davinci/da830evm/da830evm.c) | 29 | ||||
| -rw-r--r-- | board/davinci/da8xxevm/da850evm.c | 111 | ||||
| -rw-r--r-- | board/pandora/pandora.c | 9 | ||||
| -rw-r--r-- | include/configs/da850evm.h | 140 | 
12 files changed, 371 insertions, 20 deletions
| diff --git a/MAINTAINERS b/MAINTAINERS index e87a197ad..24f754cce 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -354,6 +354,10 @@ Daniel Poirot <dan.poirot@windriver.com>  	sbc8240		MPC8240  	sbc405		PPC405GP +Sudhakar Rajashekhara <sudhakar.raj@ti.com> + +	da850evm	ARM926EJS (DA850/OMAP-L138) +  Ricardo Ribalda <ricardo.ribalda@uam.es>  	ml507 		PPC440x5 @@ -561,6 +561,7 @@ LIST_ARM9="			\  	cp946es			\  	cp966			\  	da830evm		\ +	da850evm		\  	edb9301			\  	edb9302			\  	edb9302a		\ @@ -2920,8 +2920,9 @@ cp922_XA10_config	\  cp1026_config: unconfig  	@board/armltd/integrator/split_by_variant.sh cp $@ -da830evm_config:	unconfig -	@$(MKCONFIG) $(@:_config=) arm arm926ejs da830evm davinci davinci +da830evm_config		\ +da850evm_config:	unconfig +	@$(MKCONFIG) $(@:_config=) arm arm926ejs da8xxevm davinci davinci  davinci_dvevm_config :	unconfig  	@$(MKCONFIG) $(@:_config=) arm arm926ejs dvevm davinci davinci diff --git a/arch/arm/include/asm/arch-davinci/hardware.h b/arch/arm/include/asm/arch-davinci/hardware.h index 81cc8ab15..3520cf882 100644 --- a/arch/arm/include/asm/arch-davinci/hardware.h +++ b/arch/arm/include/asm/arch-davinci/hardware.h @@ -398,6 +398,7 @@ struct davinci_syscfg_regs {  #define DAVINCI_SYSCFG_SUSPSRC_EMAC		(1 << 5)  #define DAVINCI_SYSCFG_SUSPSRC_I2C		(1 << 16)  #define DAVINCI_SYSCFG_SUSPSRC_SPI0		(1 << 21) +#define DAVINCI_SYSCFG_SUSPSRC_SPI1		(1 << 22)  #define DAVINCI_SYSCFG_SUSPSRC_UART2		(1 << 20)  #define DAVINCI_SYSCFG_SUSPSRC_TIMER0		(1 << 27) diff --git a/board/davinci/da830evm/Makefile b/board/davinci/da8xxevm/Makefile index 02636fa77..17cbe86c8 100644 --- a/board/davinci/da830evm/Makefile +++ b/board/davinci/da8xxevm/Makefile @@ -27,7 +27,11 @@ include $(TOPDIR)/config.mk  LIB	= $(obj)lib$(BOARD).a -COBJS	:= da830evm.o +COBJS-y	+= common.o +COBJS-$(CONFIG_MACH_DAVINCI_DA830_EVM)	+= da830evm.o +COBJS-$(CONFIG_MACH_DAVINCI_DA850_EVM)	+= da850evm.o + +COBJS   := $(COBJS-y)  SRCS	:= $(SOBJS:.o=.S) $(COBJS:.o=.c)  OBJS	:= $(addprefix $(obj),$(COBJS)) diff --git a/board/davinci/da8xxevm/common.c b/board/davinci/da8xxevm/common.c new file mode 100644 index 000000000..9cd5204c7 --- /dev/null +++ b/board/davinci/da8xxevm/common.c @@ -0,0 +1,55 @@ +/* + * Miscellaneous DA8XX functions. + * + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include "common.h" + +#ifndef CONFIG_USE_IRQ +void irq_init(void) +{ +	/* +	 * Mask all IRQs by clearing the global enable and setting +	 * the enable clear for all the 90 interrupts. +	 */ + +	writel(0, &davinci_aintc_regs->ger); + +	writel(0, &davinci_aintc_regs->hier); + +	writel(0xffffffff, &davinci_aintc_regs->ecr1); +	writel(0xffffffff, &davinci_aintc_regs->ecr2); +	writel(0xffffffff, &davinci_aintc_regs->ecr3); +} +#endif + +/* + * Enable PSC for various peripherals. + */ +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, +				    const int n_items) +{ +	int i; + +	for (i = 0; i < n_items; i++) +		lpsc_on(item[i].lpsc_no); + +	return 0; +} diff --git a/board/davinci/da8xxevm/common.h b/board/davinci/da8xxevm/common.h new file mode 100644 index 000000000..7ae63a6d3 --- /dev/null +++ b/board/davinci/da8xxevm/common.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __COMMON_H +#define __COMMON_H + +struct lpsc_resource { +	const int	lpsc_no; +}; + +void irq_init(void); +int da8xx_configure_lpsc_items(const struct lpsc_resource *item, +				    int n_items); + +#endif /* __COMMON_H */ diff --git a/board/davinci/da830evm/config.mk b/board/davinci/da8xxevm/config.mk index 6da29a979..6da29a979 100644 --- a/board/davinci/da830evm/config.mk +++ b/board/davinci/da8xxevm/config.mk diff --git a/board/davinci/da830evm/da830evm.c b/board/davinci/da8xxevm/da830evm.c index 638544366..57506d647 100644 --- a/board/davinci/da830evm/da830evm.c +++ b/board/davinci/da8xxevm/da830evm.c @@ -41,6 +41,7 @@  #include <asm/arch/emac_defs.h>  #include <asm/io.h>  #include "../common/misc.h" +#include "common.h"  DECLARE_GLOBAL_DATA_PTR; @@ -120,21 +121,18 @@ static const struct pinmux_resource pinmuxes[] = {  #endif  }; +static const struct lpsc_resource lpsc[] = { +	{ DAVINCI_LPSC_AEMIF },	/* NAND, NOR */ +	{ DAVINCI_LPSC_SPI0 },	/* Serial Flash */ +	{ DAVINCI_LPSC_EMAC },	/* image download */ +	{ DAVINCI_LPSC_UART2 },	/* console */ +	{ DAVINCI_LPSC_GPIO }, +}; +  int board_init(void)  {  #ifndef CONFIG_USE_IRQ -	/* -	 * Mask all IRQs by clearing the global enable and setting -	 * the enable clear for all the 90 interrupts. -	 */ - -	writel(0, &davinci_aintc_regs->ger); - -	writel(0, &davinci_aintc_regs->hier); - -	writel(0xffffffff, &davinci_aintc_regs->ecr1); -	writel(0xffffffff, &davinci_aintc_regs->ecr2); -	writel(0xffffffff, &davinci_aintc_regs->ecr3); +	irq_init();  #endif  #ifdef CONFIG_NAND_DAVINCI @@ -165,11 +163,8 @@ int board_init(void)  	 * assuming here that the DSP bootloader has set the IOPU  	 * such that PSC access is available to ARM  	 */ -	lpsc_on(DAVINCI_LPSC_AEMIF);    /* NAND, NOR */ -	lpsc_on(DAVINCI_LPSC_SPI0);     /* Serial Flash */ -	lpsc_on(DAVINCI_LPSC_EMAC);     /* image download */ -	lpsc_on(DAVINCI_LPSC_UART2);    /* console */ -	lpsc_on(DAVINCI_LPSC_GPIO); +	if (da8xx_configure_lpsc_items(lpsc, ARRAY_SIZE(lpsc))) +		return 1;  	/* setup the SUSPSRC for ARM to control emulation suspend */  	writel(readl(&davinci_syscfg_regs->suspsrc) & diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c new file mode 100644 index 000000000..959b2c6ff --- /dev/null +++ b/board/davinci/da8xxevm/da850evm.c @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * Based on da830evm.c. Original Copyrights follow: + * + * Copyright (C) 2009 Nick Thompson, GE Fanuc, Ltd. <nick.thompson@gefanuc.com> + * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <common.h> +#include <i2c.h> +#include <asm/arch/hardware.h> +#include <asm/io.h> +#include "../common/misc.h" +#include "common.h" + +DECLARE_GLOBAL_DATA_PTR; + +#define pinmux	(&davinci_syscfg_regs->pinmux) + +/* SPI0 pin muxer settings */ +static const struct pinmux_config spi1_pins[] = { +	{ pinmux[5], 1, 1 }, +	{ pinmux[5], 1, 2 }, +	{ pinmux[5], 1, 4 }, +	{ pinmux[5], 1, 5 } +}; + +/* UART pin muxer settings */ +static const struct pinmux_config uart_pins[] = { +	{ pinmux[0], 4, 6 }, +	{ pinmux[0], 4, 7 }, +	{ pinmux[4], 2, 4 }, +	{ pinmux[4], 2, 5 } +}; + +/* I2C pin muxer settings */ +static const struct pinmux_config i2c_pins[] = { +	{ pinmux[4], 2, 2 }, +	{ pinmux[4], 2, 3 } +}; + +static const struct pinmux_resource pinmuxes[] = { +#ifdef CONFIG_SPI_FLASH +	PINMUX_ITEM(spi1_pins), +#endif +	PINMUX_ITEM(uart_pins), +	PINMUX_ITEM(i2c_pins), +}; + +static const struct lpsc_resource lpsc[] = { +	{ DAVINCI_LPSC_AEMIF },	/* NAND, NOR */ +	{ DAVINCI_LPSC_SPI1 },	/* Serial Flash */ +	{ DAVINCI_LPSC_EMAC },	/* image download */ +	{ DAVINCI_LPSC_UART2 },	/* console */ +	{ DAVINCI_LPSC_GPIO }, +}; + +int board_init(void) +{ +#ifndef CONFIG_USE_IRQ +	irq_init(); +#endif + +	/* arch number of the board */ +	gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DA850_EVM; + +	/* address of boot parameters */ +	gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR; + +	/* +	 * Power on required peripherals +	 * ARM does not have access by default to PSC0 and PSC1 +	 * assuming here that the DSP bootloader has set the IOPU +	 * such that PSC access is available to ARM +	 */ +	if (da8xx_configure_lpsc_items(lpsc, ARRAY_SIZE(lpsc))) +		return 1; + +	/* setup the SUSPSRC for ARM to control emulation suspend */ +	writel(readl(&davinci_syscfg_regs->suspsrc) & +	       ~(DAVINCI_SYSCFG_SUSPSRC_EMAC | DAVINCI_SYSCFG_SUSPSRC_I2C | +		 DAVINCI_SYSCFG_SUSPSRC_SPI1 | DAVINCI_SYSCFG_SUSPSRC_TIMER0 | +		 DAVINCI_SYSCFG_SUSPSRC_UART2), +	       &davinci_syscfg_regs->suspsrc); + +	/* configure pinmux settings */ +	if (davinci_configure_pin_mux_items(pinmuxes, ARRAY_SIZE(pinmuxes))) +		return 1; + +	/* enable the console UART */ +	writel((DAVINCI_UART_PWREMU_MGMT_FREE | DAVINCI_UART_PWREMU_MGMT_URRST | +		DAVINCI_UART_PWREMU_MGMT_UTRST), +	       &davinci_uart2_ctrl_regs->pwremu_mgmt); + +	return 0; +} diff --git a/board/pandora/pandora.c b/board/pandora/pandora.c index 75e43305b..355e9eaa8 100644 --- a/board/pandora/pandora.c +++ b/board/pandora/pandora.c @@ -37,6 +37,10 @@  #include <asm/mach-types.h>  #include "pandora.h" +#define TWL4030_BB_CFG_BBCHEN		(1 << 4) +#define TWL4030_BB_CFG_BBSEL_3200MV	(3 << 2) +#define TWL4030_BB_CFG_BBISEL_500UA	2 +  /*   * Routine: board_init   * Description: Early hardware init. @@ -78,6 +82,11 @@ int misc_init_r(void)  	writel(GPIO28, &gpio5_base->setdataout);  	writel(GPIO4, &gpio6_base->setdataout); +	/* Enable battery backup capacitor (3.2V, 0.5mA charge current) */ +	twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER, +		TWL4030_BB_CFG_BBCHEN | TWL4030_BB_CFG_BBSEL_3200MV | +		TWL4030_BB_CFG_BBISEL_500UA, TWL4030_PM_RECEIVER_BB_CFG); +  	dieid_num_r();  	return 0; diff --git a/include/configs/da850evm.h b/include/configs/da850evm.h new file mode 100644 index 000000000..357715d66 --- /dev/null +++ b/include/configs/da850evm.h @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ + * + * Based on davinci_dvevm.h. Original Copyrights follow: + * + * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * Board + */ + +/* + * SoC Configuration + */ +#define CONFIG_MACH_DAVINCI_DA850_EVM +#define CONFIG_ARM926EJS		/* arm926ejs CPU core */ +#define CONFIG_SOC_DA8XX		/* TI DA8xx SoC */ +#define CONFIG_SYS_CLK_FREQ		clk_get(DAVINCI_ARM_CLKID) +#define CONFIG_SYS_OSCIN_FREQ		24000000 +#define CONFIG_SYS_TIMERBASE		DAVINCI_TIMER0_BASE +#define CONFIG_SYS_HZ_CLOCK		clk_get(DAVINCI_AUXCLK_CLKID) +#define CONFIG_SYS_HZ			1000 +#define CONFIG_SKIP_LOWLEVEL_INIT +#define CONFIG_SKIP_RELOCATE_UBOOT	/* to a proper address, init done */ + +/* + * Memory Info + */ +#define CONFIG_SYS_MALLOC_LEN	(0x10000 + 1*1024*1024) /* malloc() len */ +#define CONFIG_SYS_GBL_DATA_SIZE	128 /* reserved for initial data */ +#define PHYS_SDRAM_1		DAVINCI_DDR_EMIF_DATA_BASE /* DDR Start */ +#define PHYS_SDRAM_1_SIZE	(64 << 20) /* SDRAM size 64MB */ + +/* memtest start addr */ +#define CONFIG_SYS_MEMTEST_START	(PHYS_SDRAM_1 + 0x2000000) + +/* memtest will be run on 16MB */ +#define CONFIG_SYS_MEMTEST_END 	(PHYS_SDRAM_1 + 0x2000000 + 16*1024*1024) + +#define CONFIG_NR_DRAM_BANKS	1 /* we have 1 bank of DRAM */ +#define CONFIG_STACKSIZE	(256*1024) /* regular stack */ + +/* + * Serial Driver info + */ +#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE	-4	/* NS16550 register size */ +#define CONFIG_SYS_NS16550_COM1	DAVINCI_UART2_BASE /* Base address of UART2 */ +#define CONFIG_SYS_NS16550_CLK	clk_get(DAVINCI_UART2_CLKID) +#define CONFIG_CONS_INDEX	1		/* use UART0 for console */ +#define CONFIG_BAUDRATE		115200		/* Default baud rate */ +#define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +/* + * I2C Configuration + */ +#define CONFIG_HARD_I2C +#define CONFIG_DRIVER_DAVINCI_I2C +#define CONFIG_SYS_I2C_SPEED		25000 +#define CONFIG_SYS_I2C_SLAVE		10 /* Bogus, master-only in U-Boot */ + +/* + * U-Boot general configuration + */ +#define CONFIG_BOOTFILE		"uImage" /* Boot file name */ +#define CONFIG_SYS_PROMPT	"DA850-evm > " /* Command Prompt */ +#define CONFIG_SYS_CBSIZE	1024 /* Console I/O Buffer Size	*/ +#define CONFIG_SYS_PBSIZE	(CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) +#define CONFIG_SYS_MAXARGS	16 /* max number of command args */ +#define CONFIG_SYS_BARGSIZE	CONFIG_SYS_CBSIZE /* Boot Args Buffer Size */ +#define CONFIG_SYS_LOAD_ADDR	(PHYS_SDRAM_1 + 0x700000) +#define CONFIG_VERSION_VARIABLE +#define CONFIG_AUTO_COMPLETE +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_SYS_PROMPT_HUSH_PS2	"> " +#define CONFIG_CMDLINE_EDITING +#define CONFIG_SYS_LONGHELP +#define CONFIG_CRC32_VERIFY +#define CONFIG_MX_CYCLIC + +/* + * Linux Information + */ +#define LINUX_BOOT_PARAM_ADDR	(CONFIG_SYS_MEMTEST_START + 0x100) +#define CONFIG_CMDLINE_TAG +#define CONFIG_SETUP_MEMORY_TAGS +#define CONFIG_BOOTARGS		\ +	"mem=32M console=ttyS2,115200n8 root=/dev/mtdblock2 rw noinitrd ip=dhcp" +#define CONFIG_BOOTDELAY	3 + +/* + * U-Boot commands + */ +#include <config_cmd_default.h> +#define CONFIG_CMD_ENV +#define CONFIG_CMD_ASKENV +#define CONFIG_CMD_DHCP +#define CONFIG_CMD_DIAG +#define CONFIG_CMD_MII +#define CONFIG_CMD_PING +#define CONFIG_CMD_SAVES +#define CONFIG_CMD_MEMORY + +#ifndef CONFIG_DRIVER_TI_EMAC +#undef CONFIG_CMD_NET +#undef CONFIG_CMD_DHCP +#undef CONFIG_CMD_MII +#undef CONFIG_CMD_PING +#endif + +#if !defined(CONFIG_USE_NAND) && \ +	!defined(CONFIG_USE_NOR) && \ +	!defined(CONFIG_USE_SPIFLASH) +#define CONFIG_ENV_IS_NOWHERE +#define CONFIG_SYS_NO_FLASH +#define CONFIG_ENV_SIZE		(16 << 10) +#undef CONFIG_CMD_IMLS +#undef CONFIG_CMD_ENV +#endif + +#endif /* __CONFIG_H */ |