diff options
| author | Stefano Babic <sbabic@denx.de> | 2012-10-10 21:11:43 +0000 | 
|---|---|---|
| committer | Stefano Babic <sbabic@denx.de> | 2012-10-26 16:27:58 +0200 | 
| commit | d41924a2c15cd969f29e0cf6ec0a211525b16ad8 (patch) | |
| tree | 3953de4593d90bdacfce9759bb632065f8aa2523 | |
| parent | e6500303476d7c6dfcdad2657f7d9f0a7a436697 (diff) | |
| download | olio-uboot-2014.01-d41924a2c15cd969f29e0cf6ec0a211525b16ad8.tar.xz olio-uboot-2014.01-d41924a2c15cd969f29e0cf6ec0a211525b16ad8.zip | |
MX35: Add soc_boot_mode and soc_boot_device to MX35
The functions are required to use the generic
SPL Framework.
Signed-off-by: Stefano Babic <sbabic@denx.de>
| -rw-r--r-- | arch/arm/cpu/arm1136/mx35/generic.c | 75 | ||||
| -rw-r--r-- | arch/arm/cpu/arm1136/u-boot-spl.lds | 62 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-mx35/mmc_host_def.h | 31 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-mx35/spl.h | 38 | 
4 files changed, 206 insertions, 0 deletions
| diff --git a/arch/arm/cpu/arm1136/mx35/generic.c b/arch/arm/cpu/arm1136/mx35/generic.c index 41e9639d9..98aa4d15b 100644 --- a/arch/arm/cpu/arm1136/mx35/generic.c +++ b/arch/arm/cpu/arm1136/mx35/generic.c @@ -35,6 +35,7 @@  #include <fsl_esdhc.h>  #endif  #include <netdev.h> +#include <spl.h>  #define CLK_CODE(arm, ahb, sel) (((arm) << 16) + ((ahb) << 8) + (sel))  #define CLK_CODE_ARM(c)		(((c) >> 16) & 0xFF) @@ -492,3 +493,77 @@ void reset_cpu(ulong addr)  	struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE_ADDR;  	writew(4, &wdog->wcr);  } + +#define RCSR_MEM_CTL_WEIM	0 +#define RCSR_MEM_CTL_NAND	1 +#define RCSR_MEM_CTL_ATA	2 +#define RCSR_MEM_CTL_EXPANSION	3 +#define RCSR_MEM_TYPE_NOR	0 +#define RCSR_MEM_TYPE_ONENAND	2 +#define RCSR_MEM_TYPE_SD	0 +#define RCSR_MEM_TYPE_I2C	2 +#define RCSR_MEM_TYPE_SPI	3 + +u32 spl_boot_device(void) +{ +	struct ccm_regs *ccm = +		(struct ccm_regs *)IMX_CCM_BASE; + +	u32 rcsr = readl(&ccm->rcsr); +	u32 mem_type, mem_ctl; + +	/* In external mode, no boot device is returned */ +	if ((rcsr >> 10) & 0x03) +		return BOOT_DEVICE_NONE; + +	mem_ctl = (rcsr >> 25) & 0x03; +	mem_type = (rcsr >> 23) & 0x03; + +	switch (mem_ctl) { +	case RCSR_MEM_CTL_WEIM: +		switch (mem_type) { +		case RCSR_MEM_TYPE_NOR: +			return BOOT_DEVICE_NOR; +		case RCSR_MEM_TYPE_ONENAND: +			return BOOT_DEVICE_ONE_NAND; +		default: +			return BOOT_DEVICE_NONE; +		} +	case RCSR_MEM_CTL_NAND: +		return BOOT_DEVICE_NAND; +	case RCSR_MEM_CTL_EXPANSION: +		switch (mem_type) { +		case RCSR_MEM_TYPE_SD: +			return BOOT_DEVICE_MMC1; +		case RCSR_MEM_TYPE_I2C: +			return BOOT_DEVICE_I2C; +		case RCSR_MEM_TYPE_SPI: +			return BOOT_DEVICE_SPI; +		default: +			return BOOT_DEVICE_NONE; +		} +	} + +	return BOOT_DEVICE_NONE; +} + +#ifdef CONFIG_SPL_BUILD +u32 spl_boot_mode(void) +{ +	switch (spl_boot_device()) { +	case BOOT_DEVICE_MMC1: +#ifdef CONFIG_SPL_FAT_SUPPORT +		return MMCSD_MODE_FAT; +#else +		return MMCSD_MODE_RAW; +#endif +		break; +	case BOOT_DEVICE_NAND: +		return 0; +		break; +	default: +		puts("spl: ERROR:  unsupported device\n"); +		hang(); +	} +} +#endif diff --git a/arch/arm/cpu/arm1136/u-boot-spl.lds b/arch/arm/cpu/arm1136/u-boot-spl.lds new file mode 100644 index 000000000..a0462ab97 --- /dev/null +++ b/arch/arm/cpu/arm1136/u-boot-spl.lds @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + * + * (C) Copyright 2010 + * Texas Instruments, <www.ti.com> + *	Aneesh V <aneesh@ti.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\ +		LENGTH = CONFIG_SPL_MAX_SIZE } +MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \ +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE } + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ +	.text      : +	{ +	__start = .; +	  arch/arm/cpu/arm1136/start.o	(.text) +	  *(.text*) +	} >.sram + +	. = ALIGN(4); +	.rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram + +	. = ALIGN(4); +	.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram +	. = ALIGN(4); +	__image_copy_end = .; +	_end = .; + +	.bss : +	{ +		. = ALIGN(4); +		__bss_start = .; +		*(.bss*) +		. = ALIGN(4); +		__bss_end__ = .; +	} >.sdram +} diff --git a/arch/arm/include/asm/arch-mx35/mmc_host_def.h b/arch/arm/include/asm/arch-mx35/mmc_host_def.h new file mode 100644 index 000000000..775b9552c --- /dev/null +++ b/arch/arm/include/asm/arch-mx35/mmc_host_def.h @@ -0,0 +1,31 @@ +/* + * (C) Copyright 2008 + * Texas Instruments, <www.ti.com> + * Syed Mohammed Khasim <khasim@ti.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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's version 2 of + * the License. + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef MMC_HOST_DEF_H +#define MMC_HOST_DEF_H + +/* Driver definitions */ +#define MMCSD_SECTOR_SIZE		512 + +#endif /* MMC_HOST_DEF_H */ diff --git a/arch/arm/include/asm/arch-mx35/spl.h b/arch/arm/include/asm/arch-mx35/spl.h new file mode 100644 index 000000000..91d11ae84 --- /dev/null +++ b/arch/arm/include/asm/arch-mx35/spl.h @@ -0,0 +1,38 @@ +/* + * (C) Copyright 2012 + * Texas Instruments, <www.ti.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#ifndef	_ASM_ARCH_SPL_H_ +#define	_ASM_SPL_H_ + +#define BOOT_DEVICE_NONE	0 +#define BOOT_DEVICE_XIP		1 +#define BOOT_DEVICE_XIPWAIT	2 +#define BOOT_DEVICE_NAND	3 +#define BOOT_DEVICE_ONE_NAND	4 +#define BOOT_DEVICE_MMC1	5 +#define BOOT_DEVICE_MMC2	6 +#define BOOT_DEVICE_MMC2_2	7 +#define BOOT_DEVICE_NOR		8 +#define BOOT_DEVICE_I2C		9 +#define BOOT_DEVICE_SPI		10 + +#endif |