From d6202dd986e8f226aaf4a81d4aebb3699c4dc6cf Mon Sep 17 00:00:00 2001 From: Kyungmin Park Date: Thu, 30 Jul 2009 17:55:33 +0900 Subject: [PATCH] s5pc110: universal: Increase IPL to 16KiB for support s5pc110 Signed-off-by: Kyungmin Park --- Makefile | 2 +- onenand_ipl/board/samsung/universal/Makefile | 16 ++++++++-------- onenand_ipl/board/samsung/universal/checksum.c | 4 ++-- onenand_ipl/onenand_read.c | 12 +++++++----- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index f6f9fc4..1f5d021 100644 --- a/Makefile +++ b/Makefile @@ -3089,7 +3089,7 @@ s5pc100_universal_config: unconfig @echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 universal samsung s5pc1xx @echo "CONFIG_ONENAND_U_BOOT = y" >> $(obj)include/config.mk - @echo "ONENAND_BIN = $(obj)onenand_ipl/onenand-ipl-8k.bin" >> $(obj)include/config.mk + @echo "ONENAND_BIN = $(obj)onenand_ipl/onenand-ipl-16k.bin" >> $(obj)include/config.mk smdkc100_config: unconfig @echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h diff --git a/onenand_ipl/board/samsung/universal/Makefile b/onenand_ipl/board/samsung/universal/Makefile index 6069adc..c62e456 100644 --- a/onenand_ipl/board/samsung/universal/Makefile +++ b/onenand_ipl/board/samsung/universal/Makefile @@ -17,10 +17,10 @@ include $(TOPDIR)/config.mk # Now it uses the S5PC100 as default # If you use the S5PC110, the load address is relocated at start.S # XXX Never set it S5PC110 it don't relocate it -TEXT_BASE = 0xD0034000 -TEXT_BASE2K = 0xD0034800 -TEXT_BASE4K = 0xD0035000 -TEXT_BASE8K = 0xD0036000 +TEXT_BASE = 0xD0034000 +TEXT_BASE2K = 0xD0034800 +TEXT_BASE4K = 0xD0035000 +TEXT_BASE16K = 0xD0038000 LDSCRIPT= $(TOPDIR)/onenand_ipl/board/$(BOARDDIR)/u-boot-onenand.lds LDFLAGS = -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS) @@ -40,7 +40,7 @@ LNDIR := $(OBJTREE)/onenand_ipl/board/$(BOARDDIR) onenandobj := $(OBJTREE)/onenand_ipl/ -ALL = $(onenandobj)onenand-ipl $(onenandobj)onenand-ipl.bin $(onenandobj)onenand-ipl-2k.bin $(onenandobj)onenand-ipl-4k.bin $(onenandobj)onenand-ipl-8k.bin +ALL = $(onenandobj)onenand-ipl $(onenandobj)onenand-ipl.bin $(onenandobj)onenand-ipl-2k.bin $(onenandobj)onenand-ipl-4k.bin $(onenandobj)onenand-ipl-16k.bin all: $(obj).depend $(ALL) @@ -50,9 +50,9 @@ $(onenandobj)onenand-ipl-2k.bin: $(onenandobj)onenand-ipl $(onenandobj)onenand-ipl-4k.bin: $(onenandobj)onenand-ipl $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE4K) -O binary $< $@ -$(onenandobj)onenand-ipl-8k.bin: $(onenandobj)onenand-ipl checksum - $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE8K) -O binary $< $@ - $(onenandobj)/board/$(BOARDDIR)/checksum $(onenandobj)onenand-ipl-8k.bin +$(onenandobj)onenand-ipl-16k.bin: $(onenandobj)onenand-ipl checksum + $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE16K) -O binary $< $@ + $(onenandobj)/board/$(BOARDDIR)/checksum $(onenandobj)onenand-ipl-16k.bin $(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 1f3773f..3b766ac 100644 --- a/onenand_ipl/board/samsung/universal/checksum.c +++ b/onenand_ipl/board/samsung/universal/checksum.c @@ -6,7 +6,7 @@ #include #include -#define IPL_8K (0x2000 - 0x4) +#define IPL_14K (0x3800 - 0x4) int main(int argc, char *argv[]) { @@ -23,7 +23,7 @@ int main(int argc, char *argv[]) return 1; } - for (i = 0; i < IPL_8K; i++) { + for (i = 0; i < IPL_14K; i++) { ret = read(fd, &buf, 1); if (ret < 0) { diff --git a/onenand_ipl/onenand_read.c b/onenand_ipl/onenand_read.c index ade3773..863db7f 100644 --- a/onenand_ipl/onenand_read.c +++ b/onenand_ipl/onenand_read.c @@ -124,20 +124,22 @@ int onenand_read_block(unsigned char *buf) int page = CONFIG_ONENAND_START_PAGE, offset = 0; int pagesize = 0, erase_shift = 0; int erasesize = 0, nblocks = 0; - int mlc = 0; + int big = 0; if ((readl(0xE0000000) & 0x00FFF000) == 0x00110000) { onenand_read_page = generic_onenand_read_page; if (onenand_readw(ONENAND_REG_TECHNOLOGY)) - mlc = 1; + big = 1; + big = 1; } else { onenand_read_page = s5pc100_onenand_read_page; if (onenand_ahb_readw(ONENAND_REG_TECHNOLOGY)) - mlc = 1; + big = 1; + page = 8; } - if (mlc) { - pagesize = 4096; /* MLC OneNAND has 4KiB pagesize */ + if (big) { + pagesize = 4096; /* OneNAND has 4KiB pagesize */ erase_shift = 18; } else { pagesize = 2048; -- 2.7.4