Hi Chander,
On Fri, Jul 29, 2011 at 12:41 PM, Chander Kashyap chander.kashyap@linaro.org wrote:
Adds mmc boot support.
Signed-off-by: Chander Kashyap chander.kashyap@linaro.org
mmc_spl/board/samsung/origen/Makefile | 106 ++++++++++++++++ mmc_spl/board/samsung/origen/mmc_boot.c | 57 +++++++++ mmc_spl/board/samsung/origen/tools/mkv310_image.c | 140 +++++++++++++++++++++ mmc_spl/board/samsung/origen/u-boot.lds | 88 +++++++++++++ 4 files changed, 391 insertions(+), 0 deletions(-) create mode 100644 mmc_spl/board/samsung/origen/Makefile create mode 100644 mmc_spl/board/samsung/origen/mmc_boot.c create mode 100644 mmc_spl/board/samsung/origen/tools/mkv310_image.c create mode 100644 mmc_spl/board/samsung/origen/u-boot.lds
diff --git a/mmc_spl/board/samsung/origen/Makefile b/mmc_spl/board/samsung/origen/Makefile new file mode 100644 index 0000000..1d61cc0 --- /dev/null +++ b/mmc_spl/board/samsung/origen/Makefile @@ -0,0 +1,106 @@ +# +# (C) Copyright 2006-2007 +# Stefan Roese, DENX Software Engineering, sr@denx.de. +# +# (C) Copyright 2008 +# Guennadi Liakhovetki, DENX Software Engineering, lg@denx.de +# +# (C) Copyright 2011 +# Chander Kashyap, Samsung Electronics, k.chander@samsung.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 +#
+CONFIG_MMC_SPL = y
+include $(TOPDIR)/config.mk
+LDSCRIPT= $(TOPDIR)/mmc_spl/board/$(BOARDDIR)/u-boot.lds +LDFLAGS = -Bstatic -T $(mmcobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(PLATFORM_LDFLAGS) +AFLAGS += -DCONFIG_MMC_SPL +AFLAGS += -DCONFIG_SPL_BUILD +CFLAGS += -DCONFIG_MMC_SPL +CFLAGS += -DCONFIG_SPL_BUILD
+SOBJS = start.o mem_setup.o lowlevel_init.o +COBJS = mmc_boot.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) +__OBJS := $(SOBJS) $(COBJS) +LNDIR := $(OBJTREE)/mmc_spl/board/$(BOARDDIR)
+mmcobj := $(OBJTREE)/mmc_spl/
+MKV310_MMC_SPL_EXEC = mkv310_mmc_spl_exec +MMC_SPL_BIN = u-boot-mmc-spl.bin
+ALL = $(mmcobj)u-boot-spl $(mmcobj)u-boot-spl.bin $(mmcobj)$(MMC_SPL_BIN)
+all: $(obj).depend $(ALL)
+$(mmcobj)$(MMC_SPL_BIN): $(mmcobj)u-boot-spl.bin tools/$(MKV310_MMC_SPL_EXEC)
- ./tools/$(MKV310_MMC_SPL_EXEC) $(mmcobj)u-boot-spl.bin $(mmcobj)$(MMC_SPL_BIN)
- rm -f tools/$(MKV310_MMC_SPL_EXEC)
+tools/$(MKV310_MMC_SPL_EXEC): tools/mkv310_image.c
- $(HOSTCC) tools/mkv310_image.c -o tools/$(MKV310_MMC_SPL_EXEC)
+$(mmcobj)u-boot-spl.bin: $(mmcobj)u-boot-spl
- $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
+$(mmcobj)u-boot-spl: $(OBJS) $(mmcobj)u-boot.lds
- cd $(LNDIR) && $(LD) $(LDFLAGS) $(__OBJS) \
- -Map $(mmcobj)u-boot-spl.map \
- -o $(mmcobj)u-boot-spl
+$(mmcobj)u-boot.lds: $(LDSCRIPT)
- $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
+# create symbolic links for common files
+# from cpu directory +start.S:
- @rm -f $@
- @ln -s $(TOPDIR)/arch/arm/cpu/armv7/start.S $@
+# from board directory +mem_setup.S:
- @rm -f $@
- @ln -s $(TOPDIR)/board/samsung/origen/mem_setup.S $@
+lowlevel_init.S:
- @rm -f $@
- @ln -s $(TOPDIR)/board/samsung/origen/lowlevel_init.S $@
+#########################################################################
+$(obj)%.o: %.S
- $(CC) $(AFLAGS) -c -o $@ $<
+$(obj)%.o: %.c
- $(CC) $(CFLAGS) -c -o $@ $<
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+######################################################################### diff --git a/mmc_spl/board/samsung/origen/mmc_boot.c b/mmc_spl/board/samsung/origen/mmc_boot.c new file mode 100644 index 0000000..d9b44d8 --- /dev/null +++ b/mmc_spl/board/samsung/origen/mmc_boot.c @@ -0,0 +1,57 @@ +/*
- Copyright (C) 2011 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>
+typedef u32(*copy_sd_mmc_to_mem) \
- (u32 start_block, u32 block_count, u32 *dest_addr);
+void copy_uboot_to_ram(void) +{
- copy_sd_mmc_to_mem copy_bl2 = (copy_sd_mmc_to_mem)*(u32 *)(0x02020030);
- copy_bl2(BL2_START_OFFSET,\
- BL2_SIZE_BLOC_COUNT, (u32 *)CONFIG_SYS_TEXT_BASE);
+}
Curious to know, what the 0x02020030 hardcoding number means here? It is a pointer to a API or hardware register, or anything else, how this simple function perform the data transfer from mmc to ram?
Best regards, Lei