Message ID | 1303369375-30904-3-git-send-email-chander.kashyap@linaro.org |
---|---|
State | Superseded |
Headers | show |
Dear Chander Kashyap, Sorry to late review. On 21 April 2011 16:02, Chander Kashyap <chander.kashyap@linaro.org> wrote: > Added MMC SPL boot support for SMDKV310. This framework design is > based on nand_spl support. > > Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> > --- > Makefile | 9 ++ > spl/board/samsung/smdkv310/Makefile | 103 +++++++++++++++++++++++ > spl/board/samsung/smdkv310/mmc_boot.c | 82 ++++++++++++++++++ > spl/board/samsung/smdkv310/tools/mkv310_image.c | 103 +++++++++++++++++++++++ > spl/board/samsung/smdkv310/u-boot.lds | 86 +++++++++++++++++++ > 5 files changed, 383 insertions(+), 0 deletions(-) > create mode 100644 spl/board/samsung/smdkv310/Makefile > create mode 100644 spl/board/samsung/smdkv310/mmc_boot.c > create mode 100644 spl/board/samsung/smdkv310/tools/mkv310_image.c > create mode 100644 spl/board/samsung/smdkv310/u-boot.lds > > diff --git a/Makefile b/Makefile > index 713dba1..a298221 100644 > --- a/Makefile > +++ b/Makefile > @@ -321,6 +321,10 @@ ALL += $(obj)u-boot-onenand.bin > ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin > endif > > +ifeq ($(CONFIG_MMC_U_BOOT),y) > +ALL += $(obj)spl/v310_mmc_spl.bin NAK. This naming is SoC specific. And binary is should be located in root directory, I think.. e.g) ALL += $(obj)u-boot-mmc.bin > +endif > + > all: $(ALL) > > $(obj)u-boot.hex: $(obj)u-boot > @@ -412,6 +416,11 @@ onenand_ipl: $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk > $(obj)u-boot-onenand.bin: onenand_ipl $(obj)u-boot.bin > cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin > > +spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend mmc_spl is better. > + $(MAKE) -C spl/board/$(BOARDDIR) all > + > +$(obj)spl/v310_mmc_spl.bin: spl > + > $(VERSION_FILE): > @( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \ > printf '#define PLAIN_VERSION "%s%s"\n' \ And you missed clean and clobber sections. > diff --git a/spl/board/samsung/smdkv310/Makefile b/spl/board/samsung/smdkv310/Makefile > new file mode 100644 > index 0000000..fdede6b > --- /dev/null > +++ b/spl/board/samsung/smdkv310/Makefile > @@ -0,0 +1,103 @@ > +# > +# (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)/spl/board/$(BOARDDIR)/u-boot.lds > +LDFLAGS = -Bstatic -T $(mmcobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(PLATFORM_LDFLAGS) > +AFLAGS += -DCONFIG_MMC_SPL > +CFLAGS += -DCONFIG_MMC_SPL Please add -DCONFIG_PRELOADER also. > + > +SOBJS = start.o mem_setup.o lowlevel_init.o > +COBJS = mmc_boot.o > + > +SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c)) > +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) > +__OBJS := $(SOBJS) $(COBJS) > +LNDIR := $(OBJTREE)/spl/board/$(BOARDDIR) > + > +mmcobj := $(OBJTREE)/spl/ > + > + > +MKBIN_V310_MMC_SPL_BIN = mkv310_mmc_spl_bin > +MMC_SPL_BIN = v310_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/$(MKBIN_V310_MMC_SPL_BIN) > + ./tools/$(MKBIN_V310_MMC_SPL_BIN) $(mmcobj)u-boot-spl.bin $(mmcobj)$(MMC_SPL_BIN) > + > +tools/$(MKBIN_V310_MMC_SPL_BIN): tools/mkv310_image.c > + $(HOSTCC) tools/mkv310_image.c -o tools/$(MKBIN_V310_MMC_SPL_BIN) > + > +$(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 > +$(obj)start.S: > + @rm -f $@ > + @ln -s $(TOPDIR)/arch/arm/cpu/armv7/start.S $@ > + > +# from board directory > +$(obj)mem_setup.S: > + @rm -f $@ > + @ln -s $(TOPDIR)/board/samsung/smdkv310/mem_setup.S $@ > + > +$(obj)lowlevel_init.S: > + @rm -f $@ > + @ln -s $(TOPDIR)/board/samsung/smdkv310/lowlevel_init.S $@ > + > +######################################################################### > + > +$(obj)%.o: $(obj)%.S > + $(CC) $(AFLAGS) -c -o $@ $< > + > +$(obj)%.o: $(obj)%.c > + $(CC) $(CFLAGS) -c -o $@ $< > + > +# defines $(obj).depend target > +include $(SRCTREE)/rules.mk > + > +sinclude $(obj).depend > + > +######################################################################### > diff --git a/spl/board/samsung/smdkv310/mmc_boot.c b/spl/board/samsung/smdkv310/mmc_boot.c > new file mode 100644 > index 0000000..ebb70cf > --- /dev/null > +++ b/spl/board/samsung/smdkv310/mmc_boot.c > @@ -0,0 +1,82 @@ > +/* > + * 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)(0x00002488); > + copy_bl2(65, BL2_SIZE_BLOC_COUNT, (u32 *)CONFIG_SYS_PHY_UBOOT_BASE); CONFIG_SYS_PHY_UBOOT_BASE -> 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 > + */ please fix this comment > + uboot = (void *)CONFIG_SYS_MMC_UBOOT_START; > + (*uboot)(); > + /* Never returns Here */ > +} > + > +#endif > diff --git a/spl/board/samsung/smdkv310/tools/mkv310_image.c b/spl/board/samsung/smdkv310/tools/mkv310_image.c > new file mode 100644 > index 0000000..f28583c > --- /dev/null > +++ b/spl/board/samsung/smdkv310/tools/mkv310_image.c Need comment or document for this file. So that people know what is purpose of this file. Thanks Minkyu Kang
Dear Minkyu Kang, On 17 May 2011 13:56, Minkyu Kang <promsoft@gmail.com> wrote: > Dear Chander Kashyap, > > Sorry to late review. > > On 21 April 2011 16:02, Chander Kashyap <chander.kashyap@linaro.org> wrote: >> Added MMC SPL boot support for SMDKV310. This framework design is >> based on nand_spl support. >> >> Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> >> --- >> Makefile | 9 ++ >> spl/board/samsung/smdkv310/Makefile | 103 +++++++++++++++++++++++ >> spl/board/samsung/smdkv310/mmc_boot.c | 82 ++++++++++++++++++ >> spl/board/samsung/smdkv310/tools/mkv310_image.c | 103 +++++++++++++++++++++++ >> spl/board/samsung/smdkv310/u-boot.lds | 86 +++++++++++++++++++ >> 5 files changed, 383 insertions(+), 0 deletions(-) >> create mode 100644 spl/board/samsung/smdkv310/Makefile >> create mode 100644 spl/board/samsung/smdkv310/mmc_boot.c >> create mode 100644 spl/board/samsung/smdkv310/tools/mkv310_image.c >> create mode 100644 spl/board/samsung/smdkv310/u-boot.lds >> >> diff --git a/Makefile b/Makefile >> index 713dba1..a298221 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -321,6 +321,10 @@ ALL += $(obj)u-boot-onenand.bin >> ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin >> endif >> >> +ifeq ($(CONFIG_MMC_U_BOOT),y) >> +ALL += $(obj)spl/v310_mmc_spl.bin > > NAK. > This naming is SoC specific. Renamed to u-boot-mmc-spl.bin > And binary is should be located in root directory, I think.. > e.g) ALL += $(obj)u-boot-mmc.bin I think, as this in spl image in addition to u-boot image it should be in mmc_spl directory. >> +endif >> + >> all: $(ALL) >> >> $(obj)u-boot.hex: $(obj)u-boot >> @@ -412,6 +416,11 @@ onenand_ipl: $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk >> $(obj)u-boot-onenand.bin: onenand_ipl $(obj)u-boot.bin >> cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin >> >> +spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend > > mmc_spl is better. done > >> + $(MAKE) -C spl/board/$(BOARDDIR) all >> + >> +$(obj)spl/v310_mmc_spl.bin: spl >> + >> $(VERSION_FILE): >> @( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \ >> printf '#define PLAIN_VERSION "%s%s"\n' \ > > And you missed clean and clobber sections. Added the same. > >> diff --git a/spl/board/samsung/smdkv310/Makefile b/spl/board/samsung/smdkv310/Makefile >> new file mode 100644 >> index 0000000..fdede6b >> --- /dev/null >> +++ b/spl/board/samsung/smdkv310/Makefile >> @@ -0,0 +1,103 @@ >> +# >> +# (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)/spl/board/$(BOARDDIR)/u-boot.lds >> +LDFLAGS = -Bstatic -T $(mmcobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(PLATFORM_LDFLAGS) >> +AFLAGS += -DCONFIG_MMC_SPL >> +CFLAGS += -DCONFIG_MMC_SPL > > Please add -DCONFIG_PRELOADER also. Testing with this option > >> + >> +SOBJS = start.o mem_setup.o lowlevel_init.o >> +COBJS = mmc_boot.o >> + >> +SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c)) >> +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) >> +__OBJS := $(SOBJS) $(COBJS) >> +LNDIR := $(OBJTREE)/spl/board/$(BOARDDIR) >> + >> +mmcobj := $(OBJTREE)/spl/ >> + >> + >> +MKBIN_V310_MMC_SPL_BIN = mkv310_mmc_spl_bin >> +MMC_SPL_BIN = v310_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/$(MKBIN_V310_MMC_SPL_BIN) >> + ./tools/$(MKBIN_V310_MMC_SPL_BIN) $(mmcobj)u-boot-spl.bin $(mmcobj)$(MMC_SPL_BIN) >> + >> +tools/$(MKBIN_V310_MMC_SPL_BIN): tools/mkv310_image.c >> + $(HOSTCC) tools/mkv310_image.c -o tools/$(MKBIN_V310_MMC_SPL_BIN) >> + >> +$(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 >> +$(obj)start.S: >> + @rm -f $@ >> + @ln -s $(TOPDIR)/arch/arm/cpu/armv7/start.S $@ >> + >> +# from board directory >> +$(obj)mem_setup.S: >> + @rm -f $@ >> + @ln -s $(TOPDIR)/board/samsung/smdkv310/mem_setup.S $@ >> + >> +$(obj)lowlevel_init.S: >> + @rm -f $@ >> + @ln -s $(TOPDIR)/board/samsung/smdkv310/lowlevel_init.S $@ >> + >> +######################################################################### >> + >> +$(obj)%.o: $(obj)%.S >> + $(CC) $(AFLAGS) -c -o $@ $< >> + >> +$(obj)%.o: $(obj)%.c >> + $(CC) $(CFLAGS) -c -o $@ $< >> + >> +# defines $(obj).depend target >> +include $(SRCTREE)/rules.mk >> + >> +sinclude $(obj).depend >> + >> +######################################################################### >> diff --git a/spl/board/samsung/smdkv310/mmc_boot.c b/spl/board/samsung/smdkv310/mmc_boot.c >> new file mode 100644 >> index 0000000..ebb70cf >> --- /dev/null >> +++ b/spl/board/samsung/smdkv310/mmc_boot.c >> @@ -0,0 +1,82 @@ >> +/* >> + * 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)(0x00002488); >> + copy_bl2(65, BL2_SIZE_BLOC_COUNT, (u32 *)CONFIG_SYS_PHY_UBOOT_BASE); > > CONFIG_SYS_PHY_UBOOT_BASE -> 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 >> + */ > > please fix this comment fixed > >> + uboot = (void *)CONFIG_SYS_MMC_UBOOT_START; >> + (*uboot)(); >> + /* Never returns Here */ >> +} >> + >> +#endif >> diff --git a/spl/board/samsung/smdkv310/tools/mkv310_image.c b/spl/board/samsung/smdkv310/tools/mkv310_image.c >> new file mode 100644 >> index 0000000..f28583c >> --- /dev/null >> +++ b/spl/board/samsung/smdkv310/tools/mkv310_image.c > > Need comment or document for this file. > So that people know what is purpose of this file. Added comments in the file. > > Thanks > Minkyu Kang > -- > from. prom. > www.promsoft.net >
diff --git a/Makefile b/Makefile index 713dba1..a298221 100644 --- a/Makefile +++ b/Makefile @@ -321,6 +321,10 @@ ALL += $(obj)u-boot-onenand.bin ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin endif +ifeq ($(CONFIG_MMC_U_BOOT),y) +ALL += $(obj)spl/v310_mmc_spl.bin +endif + all: $(ALL) $(obj)u-boot.hex: $(obj)u-boot @@ -412,6 +416,11 @@ onenand_ipl: $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk $(obj)u-boot-onenand.bin: onenand_ipl $(obj)u-boot.bin cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin +spl: $(TIMESTAMP_FILE) $(VERSION_FILE) depend + $(MAKE) -C spl/board/$(BOARDDIR) all + +$(obj)spl/v310_mmc_spl.bin: spl + $(VERSION_FILE): @( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \ printf '#define PLAIN_VERSION "%s%s"\n' \ diff --git a/spl/board/samsung/smdkv310/Makefile b/spl/board/samsung/smdkv310/Makefile new file mode 100644 index 0000000..fdede6b --- /dev/null +++ b/spl/board/samsung/smdkv310/Makefile @@ -0,0 +1,103 @@ +# +# (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)/spl/board/$(BOARDDIR)/u-boot.lds +LDFLAGS = -Bstatic -T $(mmcobj)u-boot.lds -Ttext $(CONFIG_SYS_TEXT_BASE) $(PLATFORM_LDFLAGS) +AFLAGS += -DCONFIG_MMC_SPL +CFLAGS += -DCONFIG_MMC_SPL + +SOBJS = start.o mem_setup.o lowlevel_init.o +COBJS = mmc_boot.o + +SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c)) +OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) +__OBJS := $(SOBJS) $(COBJS) +LNDIR := $(OBJTREE)/spl/board/$(BOARDDIR) + +mmcobj := $(OBJTREE)/spl/ + + +MKBIN_V310_MMC_SPL_BIN = mkv310_mmc_spl_bin +MMC_SPL_BIN = v310_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/$(MKBIN_V310_MMC_SPL_BIN) + ./tools/$(MKBIN_V310_MMC_SPL_BIN) $(mmcobj)u-boot-spl.bin $(mmcobj)$(MMC_SPL_BIN) + +tools/$(MKBIN_V310_MMC_SPL_BIN): tools/mkv310_image.c + $(HOSTCC) tools/mkv310_image.c -o tools/$(MKBIN_V310_MMC_SPL_BIN) + +$(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 +$(obj)start.S: + @rm -f $@ + @ln -s $(TOPDIR)/arch/arm/cpu/armv7/start.S $@ + +# from board directory +$(obj)mem_setup.S: + @rm -f $@ + @ln -s $(TOPDIR)/board/samsung/smdkv310/mem_setup.S $@ + +$(obj)lowlevel_init.S: + @rm -f $@ + @ln -s $(TOPDIR)/board/samsung/smdkv310/lowlevel_init.S $@ + +######################################################################### + +$(obj)%.o: $(obj)%.S + $(CC) $(AFLAGS) -c -o $@ $< + +$(obj)%.o: $(obj)%.c + $(CC) $(CFLAGS) -c -o $@ $< + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/spl/board/samsung/smdkv310/mmc_boot.c b/spl/board/samsung/smdkv310/mmc_boot.c new file mode 100644 index 0000000..ebb70cf --- /dev/null +++ b/spl/board/samsung/smdkv310/mmc_boot.c @@ -0,0 +1,82 @@ +/* + * 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)(0x00002488); + copy_bl2(65, BL2_SIZE_BLOC_COUNT, (u32 *)CONFIG_SYS_PHY_UBOOT_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_MMC_UBOOT_START; + (*uboot)(); + /* Never returns Here */ +} + +/* Place Holders */ +void board_init_r(gd_t *id, ulong dest_addr) +{ +} + +void do_undefined_instruction(struct pt_regs *pt_regs) +{ +} + +void do_software_interrupt(struct pt_regs *pt_regs) +{ +} + +void do_prefetch_abort(struct pt_regs *pt_regs) +{ +} + +void do_data_abort(struct pt_regs *pt_regs) +{ +} + +void do_not_used(struct pt_regs *pt_regs) +{ +} + +void do_fiq(struct pt_regs *pt_regs) +{ +} + +#ifndef CONFIG_USE_IRQ +void do_irq(struct pt_regs *pt_regs) +{ +} +#endif diff --git a/spl/board/samsung/smdkv310/tools/mkv310_image.c b/spl/board/samsung/smdkv310/tools/mkv310_image.c new file mode 100644 index 0000000..f28583c --- /dev/null +++ b/spl/board/samsung/smdkv310/tools/mkv310_image.c @@ -0,0 +1,103 @@ +/* + * 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 <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <fcntl.h> +#include <errno.h> +#include <string.h> + +#define CHECKSUM_OFFSET (14*1024-4) +#define BUFSIZE (16*1024) +#define FILE_PERM (S_IRUSR | S_IWUSR | S_IRGRP \ + | S_IWGRP | S_IROTH | S_IWOTH) + +int main(int argc, char **argv) +{ + int i, len; + unsigned char buffer[BUFSIZE] = {0}; + int ifd, ofd; + unsigned int checksum = 0, count; + + if (argc != 3) { + printf(" %d Wrong number of arguments\n", argc); + exit(EXIT_FAILURE); + } + + ifd = open(argv[1], O_RDONLY); + if (ifd < 0) { + fprintf(stderr, "%s: Can't open %s: %s\n", + argv[0], argv[1], strerror(errno)); + exit(EXIT_FAILURE); + } + + ofd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, FILE_PERM); + if (ifd < 0) { + fprintf(stderr, "%s: Can't open %s: %s\n", + argv[0], argv[2], strerror(errno)); + if (ifd) + close(ifd); + exit(EXIT_FAILURE); + } + + len = lseek(ifd, 0, SEEK_END); + lseek(ifd, 0, SEEK_SET); + + count = (len < CHECKSUM_OFFSET) ? len : CHECKSUM_OFFSET; + + if (read(ifd, buffer, count) != count) { + fprintf(stderr, "%s: Can't read %s: %s\n", + argv[0], argv[1], strerror(errno)); + + if (ifd) + close(ifd); + if (ofd) + close(ofd); + + exit(EXIT_FAILURE); + } + + for (i = 0, checksum = 0; i < CHECKSUM_OFFSET; i++) + checksum += buffer[i]; + + memcpy(&buffer[CHECKSUM_OFFSET], &checksum, sizeof(checksum)); + + if (write(ofd, buffer, BUFSIZE) != BUFSIZE) { + fprintf(stderr, "%s: Can't write %s: %s\n", + argv[0], argv[2], strerror(errno)); + + if (ifd) + close(ifd); + if (ofd) + close(ofd); + + exit(EXIT_FAILURE); + } + + if (ifd) + close(ifd); + if (ofd) + close(ofd); + + return EXIT_SUCCESS; +} diff --git a/spl/board/samsung/smdkv310/u-boot.lds b/spl/board/samsung/smdkv310/u-boot.lds new file mode 100644 index 0000000..61cd16a --- /dev/null +++ b/spl/board/samsung/smdkv310/u-boot.lds @@ -0,0 +1,86 @@ +/* + * (C) Copyright 2011 + * Chander Kashyap, Samsung Electronics, <k.chander@samsung.com> + * + * January 2004 - Changed to support H4 device + * Copyright (c) 2004-2008 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + * + * 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 + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN(4); + .text : + { + start.o (.text) + *(.text) + } + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + . = ALIGN(4); + .data : { + *(.data) + } + + . = ALIGN(4); + + . = .; + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + . = ALIGN(4); + + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + _end = .; + + .bss __rel_dyn_start (OVERLAY) : { + __bss_start = .; + *(.bss) + . = ALIGN(4); + __bss_end__ = .; + } + + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } +}
Added MMC SPL boot support for SMDKV310. This framework design is based on nand_spl support. Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org> --- Makefile | 9 ++ spl/board/samsung/smdkv310/Makefile | 103 +++++++++++++++++++++++ spl/board/samsung/smdkv310/mmc_boot.c | 82 ++++++++++++++++++ spl/board/samsung/smdkv310/tools/mkv310_image.c | 103 +++++++++++++++++++++++ spl/board/samsung/smdkv310/u-boot.lds | 86 +++++++++++++++++++ 5 files changed, 383 insertions(+), 0 deletions(-) create mode 100644 spl/board/samsung/smdkv310/Makefile create mode 100644 spl/board/samsung/smdkv310/mmc_boot.c create mode 100644 spl/board/samsung/smdkv310/tools/mkv310_image.c create mode 100644 spl/board/samsung/smdkv310/u-boot.lds -- 1.7.1