[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