[U-Boot] [PATCH 6/6 V5] EXYNOS5: Enable SPI booting.
Simon Glass
sjg at chromium.org
Thu Oct 18 01:46:11 CEST 2012
Hi Hatim,
On Tue, Oct 16, 2012 at 3:58 AM, Hatim Ali <hatim.rv at samsung.com> wrote:
> From: Rajeshwari Shinde <rajeshwari.s at samsung.com>
>
> This patch enables SPI Booting for EXYNOS5
>
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s at samsung.com>
> ---
>
> Changes since v4:
> No Change
>
> board/samsung/smdk5250/Makefile | 2 +-
> board/samsung/smdk5250/mmc_boot.c | 58 -------------------------
> board/samsung/smdk5250/spl_boot.c | 85 +++++++++++++++++++++++++++++++++++++
> include/configs/smdk5250.h | 5 ++
> 4 files changed, 91 insertions(+), 59 deletions(-)
> delete mode 100644 board/samsung/smdk5250/mmc_boot.c
> create mode 100644 board/samsung/smdk5250/spl_boot.c
>
> diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile
> index 1474fa8..47c6a5a 100644
> --- a/board/samsung/smdk5250/Makefile
> +++ b/board/samsung/smdk5250/Makefile
> @@ -36,7 +36,7 @@ COBJS += smdk5250.o
> endif
>
> ifdef CONFIG_SPL_BUILD
> -COBJS += mmc_boot.o
> +COBJS += spl_boot.o
> endif
>
> SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> diff --git a/board/samsung/smdk5250/mmc_boot.c b/board/samsung/smdk5250/mmc_boot.c
> deleted file mode 100644
> index 449a919..0000000
> --- a/board/samsung/smdk5250/mmc_boot.c
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -/*
> - * Copyright (C) 2012 Samsung Electronics
> - *
> - * 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
> - */
> -
> -#include<common.h>
> -#include<config.h>
> -
> -/*
> -* Copy U-boot from mmc to RAM:
> -* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains
> -* Pointer to API (Data transfer from mmc to ram)
> -*/
> -void copy_uboot_to_ram(void)
> -{
> - u32 (*copy_bl2)(u32, u32, u32) = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR;
> -
> - copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT, CONFIG_SYS_TEXT_BASE);
> -}
> -
> -void board_init_f(unsigned long bootflag)
> -{
> - __attribute__((noreturn)) void (*uboot)(void);
> - copy_uboot_to_ram();
> -
> - /* Jump to U-Boot image */
> - uboot = (void *)CONFIG_SYS_TEXT_BASE;
> - (*uboot)();
> - /* Never returns Here */
> -}
> -
> -/* Place Holders */
> -void board_init_r(gd_t *id, ulong dest_addr)
> -{
> - /* Function attribute is no-return */
> - /* This Function never executes */
> - while (1)
> - ;
> -}
> -
> -void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) {}
> diff --git a/board/samsung/smdk5250/spl_boot.c b/board/samsung/smdk5250/spl_boot.c
> new file mode 100644
> index 0000000..d8f3c1e
> --- /dev/null
> +++ b/board/samsung/smdk5250/spl_boot.c
> @@ -0,0 +1,85 @@
> +/*
> + * Copyright (C) 2012 Samsung Electronics
> + *
> + * 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
> + */
> +
> +#include<common.h>
> +#include<config.h>
> +
> +enum boot_mode {
> + BOOT_MODE_MMC = 4,
> + BOOT_MODE_SERIAL = 20,
> + /* Boot based on Operating Mode pin settings */
> + BOOT_MODE_OM = 32,
> + BOOT_MODE_USB, /* Boot using USB download */
> +};
> +
> + typedef u32 (*spi_copy_func_t)(u32 offset, u32 nblock, u32 dst);
> +
> +/*
> +* Copy U-boot from mmc to RAM:
> +* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains
> +* Pointer to API (Data transfer from mmc to ram)
> +*/
> +void copy_uboot_to_ram(void)
> +{
> + spi_copy_func_t spi_copy;
> + enum boot_mode bootmode;
> + u32 (*copy_bl2)(u32, u32, u32);
> +
> + bootmode = readl(EXYNOS5_POWER_BASE) & OM_STAT;
> +
> + switch (bootmode) {
> + case BOOT_MODE_SERIAL:
> + spi_copy = *(spi_copy_func_t *)EXYNOS_COPY_SPI_FNPTR_ADDR;
> + spi_copy(SPI_FLASH_UBOOT_POS, CONFIG_BL2_SIZE,
> + CONFIG_SYS_TEXT_BASE);
> + break;
> + case BOOT_MODE_MMC:
> + copy_bl2 = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR;
> + copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT,
> + CONFIG_SYS_TEXT_BASE);
> + break;
> + default:
> + break;
> + }
> +}
> +
> +void board_init_f(unsigned long bootflag)
> +{
> + __attribute__((noreturn)) void (*uboot)(void);
> + copy_uboot_to_ram();
> +
> + /* Jump to U-Boot image */
> + uboot = (void *)CONFIG_SYS_TEXT_BASE;
> + (*uboot)();
> + /* Never returns Here */
> +}
> +
> +/* Place Holders */
> +void board_init_r(gd_t *id, ulong dest_addr)
> +{
> + /* Function attribute is no-return */
> + /* This Function never executes */
> + while (1)
> + ;
> +}
> +
> +void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) {}
> diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h
> index a9334cf..1b9bf44 100644
> --- a/include/configs/smdk5250.h
> +++ b/include/configs/smdk5250.h
> @@ -189,6 +189,11 @@
> /* U-boot copy size from boot Media to DRAM.*/
> #define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512)
> #define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512)
> +
> +#define OM_STAT (0x1f << 1)
> +#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058
> +#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE)
> +
These header file white space changes seem unrelated.
> #define CONFIG_DOS_PARTITION
>
> #define CONFIG_IRAM_STACK 0x02050000
> --
> 1.7.2.3
>
Regards,
Simon
More information about the U-Boot
mailing list