s5pc110: universal: Increase IPL to 16KiB for support s5pc110
authorKyungmin Park <kyungmin.park@samsung.com>
Thu, 30 Jul 2009 08:55:33 +0000 (17:55 +0900)
committerKyungmin Park <kyungmin.park@samsung.com>
Thu, 30 Jul 2009 08:55:33 +0000 (17:55 +0900)
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Makefile
onenand_ipl/board/samsung/universal/Makefile
onenand_ipl/board/samsung/universal/checksum.c
onenand_ipl/onenand_read.c

index f6f9fc4..1f5d021 100644 (file)
--- 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
index 6069adc..c62e456 100644 (file)
@@ -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 $< $@
index 1f3773f..3b766ac 100644 (file)
@@ -6,7 +6,7 @@
 #include <fcntl.h>
 #include <err.h>
 
-#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) {
index ade3773..863db7f 100644 (file)
@@ -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;