From d829f54f8d16e690ce7551fcc525908096eb4e2a Mon Sep 17 00:00:00 2001 From: Minkyu Kang Date: Thu, 24 Dec 2009 17:30:46 +0900 Subject: [PATCH] s5pc110: support evt1 Signed-off-by: Minkyu Kang --- build.sh | 7 ++++++ onenand_ipl/board/samsung/universal/Makefile | 6 ++++- onenand_ipl/board/samsung/universal/checksum.c | 32 +++++++++++++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index e716b41..41cd021 100755 --- a/build.sh +++ b/build.sh @@ -38,11 +38,18 @@ build_uboot() make ARCH=arm CROSS_COMPILE="$CCACHE $CROSS_COMPILER" $JOBS $* } +make_evt1_image() +{ + cat onenand_ipl/onenand-ipl-16k-1.bin u-boot.bin > u-boot-onenand1.bin +} + check_ccache check_users build_uboot $* +make_evt1_image + size=`ls -al u-boot-onenand.bin | awk -F' ' '{printf $5}'` if [ "$size" -ge "262144" ]; then echo "u-boot-onenand.bin execced the 256KiB 262144 -> $size" diff --git a/onenand_ipl/board/samsung/universal/Makefile b/onenand_ipl/board/samsung/universal/Makefile index 77c78a7..1c34a8e 100644 --- a/onenand_ipl/board/samsung/universal/Makefile +++ b/onenand_ipl/board/samsung/universal/Makefile @@ -21,6 +21,7 @@ TEXT_BASE = 0xD0034000 TEXT_BASE2K = 0xD0034800 TEXT_BASE4K = 0xD0035000 TEXT_BASE16K = 0xD0038000 +TEXT_BASE16K1= 0xD0037ff0 LDSCRIPT= $(TOPDIR)/onenand_ipl/board/$(BOARDDIR)/u-boot-onenand.lds LDFLAGS = -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS) @@ -46,8 +47,11 @@ ALL = $(onenandobj)onenand-ipl $(onenandobj)onenand-ipl.bin $(onenandobj)onenand all: $(obj).depend $(ALL) $(onenandobj)onenand-ipl-16k.bin: $(onenandobj)onenand-ipl checksum + $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE16K1) -O binary $< $@ + $(onenandobj)/board/$(BOARDDIR)/checksum $(onenandobj)onenand-ipl-16k.bin 1 + cat $(onenandobj)/board/$(BOARDDIR)/header.bin $(onenandobj)onenand-ipl-16k.bin > $(onenandobj)onenand-ipl-16k-1.bin $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE16K) -O binary $< $@ - $(onenandobj)/board/$(BOARDDIR)/checksum $(onenandobj)onenand-ipl-16k.bin + $(onenandobj)/board/$(BOARDDIR)/checksum $(onenandobj)onenand-ipl-16k.bin 0 $(onenandobj)onenand-ipl.bin: $(onenandobj)onenand-ipl $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ diff --git a/onenand_ipl/board/samsung/universal/checksum.c b/onenand_ipl/board/samsung/universal/checksum.c index 7844f3e..36f86a3 100644 --- a/onenand_ipl/board/samsung/universal/checksum.c +++ b/onenand_ipl/board/samsung/universal/checksum.c @@ -35,9 +35,17 @@ int main(int argc, char *argv[]) int i, j; char buf; int fd; + int fd0; unsigned int sum = 0; struct stat stat; off_t size; + unsigned int header[4]; + int evt; + + if (argc != 3) + evt = 0; + else + evt = atoi(argv[2]); fd = open(argv[1], O_RDWR); @@ -99,7 +107,8 @@ int main(int argc, char *argv[]) #endif } - ret = write(fd, &sum, 4); + if (evt == 0) + ret = write(fd, &sum, 4); if (ret < 0) printf("read err: %s\n", ret); @@ -108,5 +117,26 @@ int main(int argc, char *argv[]) printf("checksum = %x\n", sum); + if (evt == 1) { + fd0 = open("header.bin", O_RDWR | O_CREAT | O_TRUNC, + S_IRUSR | S_IWUSR); + + if (fd0 < 0) { + printf("open err: header.bin\n"); + return 1; + } + + if (size == CHECKSUM_16K) + header[0] = 0x10000; + else + header[0] = 0x1000; + header[1] = 0; + header[2] = sum; + header[3] = 0; + + ret = write(fd0, header, 16); + close(fd0); + } + return 0; } -- 2.7.4