2 # Samsung Universal(S5PC100/S5PC110) board OneNAND IPL
4 # Copyright (C) 2009 Samsung Electronics
5 # Minkyu Kang <mk7.kang@samsung.com>
6 # Kyungmin Park <kyungmin.park@samsung.com>
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU General Public License as
10 # published by the Free Software Foundation; either version 2 of
11 # the License, or (at your option) any later version.
14 include $(TOPDIR)/config.mk
15 # S5PC100 loads at 0x34000
16 # S5PC110 loads at 0x30000 (EVT0)
17 # S5PC110 loads at 0x20010 (EVT1)
18 # Now it uses the S5PC100 as default
19 # If you use the S5PC110, the load address is relocated at start.S
20 # XXX Never set it S5PC110 it don't relocate it
21 # FIXME BL1 header uses 16 bytes at S5PC110 EVT1
22 TEXT_BASE = 0xD0034000
23 TEXT_BASE16K_EVT0 = 0xD0038000
24 TEXT_BASE16K_EVT1 = 0xD0037ff0
25 TEXT_BASE16K_EVT1_SEC = 0xD0037000
27 LDSCRIPT= $(TOPDIR)/onenand_ipl/board/$(BOARDDIR)/u-boot-onenand.lds
28 LDFLAGS = -Bstatic -T $(LDSCRIPT) -Ttext $(TEXT_BASE) $(PLATFORM_LDFLAGS)
29 AFLAGS += -DCONFIG_ONENAND_IPL -g -UTEXT_BASE -DTEXT_BASE=$(TEXT_BASE)
30 CFLAGS += -DCONFIG_ONENAND_IPL -g -D__HAVE_ARCH_MEMCPY32
31 OBJCFLAGS += --gap-fill=0x00
33 SOBJS := lowlevel_init.o mem_setup.o
34 SOBJS += start.o _memcpy32.o
36 COBJS += onenand_read.o samsung_read.o
37 COBJS += onenand_boot.o
39 SRCS := $(addprefix $(obj),$(SOBJS:.o=.S) $(COBJS:.o=.c))
40 OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
41 __OBJS := $(SOBJS) $(COBJS)
42 LNDIR := $(OBJTREE)/onenand_ipl/board/$(BOARDDIR)
44 onenandobj := $(OBJTREE)/onenand_ipl/
46 ALL = $(onenandobj)onenand-ipl $(onenandobj)onenand-ipl.bin $(onenandobj)onenand-ipl-16k-evt0.bin $(onenandobj)onenand-ipl-16k-evt1.bin $(onenandobj)onenand-ipl-secure.bin
48 all: $(obj).depend $(ALL)
50 $(onenandobj)onenand-ipl-16k-evt0.bin: $(onenandobj)onenand-ipl checksum
51 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE16K_EVT0) -O binary $< $@
52 $(onenandobj)/board/$(BOARDDIR)/checksum $@ 0
54 $(onenandobj)onenand-ipl-16k-evt1.bin: $(onenandobj)onenand-ipl checksum
55 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE16K_EVT1) -O binary $< $@
56 $(onenandobj)/board/$(BOARDDIR)/checksum $@ 1
57 cat $(onenandobj)/board/$(BOARDDIR)/header.bin $@ > $(onenandobj)onenand-ipl-16k.bin
59 $(onenandobj)onenand-ipl-secure.bin: $(onenandobj)onenand-ipl checksum
60 $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(TEXT_BASE16K_EVT1_SEC) -O binary $< $@
61 cat $(onenandobj)/board/$(BOARDDIR)/bl1.img $@ > $(onenandobj)onenand-ipl-16k-secure.bin
63 $(onenandobj)onenand-ipl.bin: $(onenandobj)onenand-ipl
64 $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
66 $(onenandobj)onenand-ipl: $(OBJS)
67 cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
73 # create symbolic links from common files
78 ln -s $(SRCTREE)/cpu/$(CPU)/start.S $@
83 ln -s $(SRCTREE)/cpu/$(CPU)/$(SOC)/cache.S $@
86 ln -sf $(SRCTREE)/board/$(BOARDDIR)/mem_setup.S $@
88 $(obj)lowlevel_init.S:
89 ln -sf $(SRCTREE)/board/$(BOARDDIR)/lowlevel_init.S $@
93 ln -sf $(SRCTREE)/lib_arm/_memcpy32.S $@
95 # from onenand_ipl directory
98 ln -s $(SRCTREE)/onenand_ipl/onenand_ipl.h $@
100 $(obj)onenand_boot.c: $(obj)onenand_ipl.h
102 ln -s $(SRCTREE)/onenand_ipl/onenand_boot.c $@
104 $(obj)onenand_read.c: $(obj)onenand_ipl.h
106 ln -s $(SRCTREE)/onenand_ipl/onenand_read.c $@
108 $(obj)samsung_read.c: $(obj)onenand_ipl.h
110 ln -s $(SRCTREE)/onenand_ipl/samsung_read.c $@
112 #########################################################################
115 $(CC) $(AFLAGS) -c -o $@ $<
118 $(CC) $(CFLAGS) -c -o $@ $<
120 # defines $(obj).depend target
121 include $(SRCTREE)/rules.mk
123 sinclude $(obj).depend
126 rm onenand_boot.c onenand_read.c samsung_read.c
128 #########################################################################