Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

Move dtc and libfdt sources from arch/powerpc/boot to scripts/dtc

The powerpc kernel always requires an Open Firmware like device tree
to supply device information. On systems without OF, this comes from
a flattened device tree blob. This blob is usually generated by dtc,
a tool which compiles a text description of the device tree into the
flattened format used by the kernel. Sometimes, the bootwrapper makes
small changes to the pre-compiled device tree blob (e.g. filling in
the size of RAM). To do this it uses the libfdt library.

Because these are only used on powerpc, the code for both these tools
is included under arch/powerpc/boot (these were imported and are
periodically updated from the upstream dtc tree).

However, the microblaze architecture, currently being prepared for
merging to mainline also uses dtc to produce device tree blobs. A few
other archs have also mentioned some interest in using dtc.
Therefore, this patch moves dtc and libfdt from arch/powerpc into
scripts, where it can be used by any architecture.

The vast bulk of this patch is a literal move, the rest is adjusting
the various Makefiles to use dtc and libfdt correctly from their new
locations.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

David Gibson and committed by
Linus Torvalds
9fffb55f afc1e702

+83 -45
+4
arch/powerpc/Kconfig
··· 181 181 default y if PMAC_APM_EMU 182 182 bool 183 183 184 + config DTC 185 + bool 186 + default y 187 + 184 188 config DEFAULT_UIMAGE 185 189 bool 186 190 help
+23 -44
arch/powerpc/boot/Makefile
··· 33 33 BOOTCFLAGS += -fno-stack-protector 34 34 endif 35 35 36 - BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) -I$(srctree)/$(src)/libfdt 36 + BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) 37 37 38 38 DTS_FLAGS ?= -p 1024 39 39 ··· 53 53 $(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o prpmc2800.o): \ 54 54 $(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader)) 55 55 56 - src-libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c 56 + libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c 57 + libfdtheader := fdt.h libfdt.h libfdt_internal.h 58 + 59 + $(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o): \ 60 + $(addprefix $(obj)/,$(libfdtheader)) 61 + 57 62 src-wlib := string.S crt0.S crtsavres.S stdio.c main.c \ 58 - $(addprefix libfdt/,$(src-libfdt)) libfdt-wrapper.c \ 63 + $(libfdt) libfdt-wrapper.c \ 59 64 ns16550.c serial.c simple_alloc.c div64.S util.S \ 60 65 gunzip_util.c elf_util.c $(zlib) devtree.c oflib.c ofconsole.c \ 61 66 4xx.c ebony.c mv64x60.c mpsc.c mv64x60_i2c.c cuboot.c bamboo.c \ ··· 101 96 $(addprefix $(obj)/,$(zliblinuxheader)): $(obj)/%: $(srctree)/include/linux/% 102 97 $(call cmd,copy_zliblinuxheader) 103 98 99 + quiet_cmd_copy_libfdt = COPY $@ 100 + cmd_copy_libfdt = cp $< $@ 101 + 102 + $(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc/libfdt/% 103 + $(call cmd,copy_libfdt) 104 + 104 105 $(obj)/empty.c: 105 106 @touch $@ 106 107 ··· 114 103 @cp $< $@ 115 104 116 105 clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ 106 + $(libfdt) $(libfdtheader) \ 117 107 empty.c zImage.coff.lds zImage.ps3.lds zImage.lds 118 108 119 109 quiet_cmd_bootcc = BOOTCC $@ ··· 126 114 quiet_cmd_bootar = BOOTAR $@ 127 115 cmd_bootar = $(CROSS32AR) -cr $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@ 128 116 117 + $(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE 118 + $(call if_changed_dep,bootcc) 129 119 $(patsubst %.c,%.o, $(filter %.c, $(src-boot))): %.o: %.c FORCE 130 120 $(Q)mkdir -p $(dir $@) 131 121 $(call if_changed_dep,bootcc) ··· 138 124 $(obj)/wrapper.a: $(obj-wlib) FORCE 139 125 $(call if_changed,bootar) 140 126 141 - hostprogs-y := addnote addRamDisk hack-coff mktree dtc 127 + hostprogs-y := addnote addRamDisk hack-coff mktree 142 128 143 129 targets += $(patsubst $(obj)/%,%,$(obj-boot) wrapper.a) 144 130 extra-y := $(obj)/wrapper.a $(obj-plat) $(obj)/empty.o \ ··· 147 133 dtstree := $(srctree)/$(src)/dts 148 134 149 135 wrapper :=$(srctree)/$(src)/wrapper 150 - wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree dtc) \ 136 + wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff mktree) \ 151 137 $(wrapper) FORCE 152 - 153 - ############# 154 - # Bits for building dtc 155 - # DTC_GENPARSER := 1 # Uncomment to rebuild flex/bison output 156 - 157 - dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o srcpos.o checks.o 158 - dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o 159 - dtc-objs := $(addprefix dtc-src/, $(dtc-objs)) 160 - 161 - # prerequisites on generated files needs to be explicit 162 - $(obj)/dtc-src/dtc-parser.tab.o: $(obj)/dtc-src/dtc-parser.tab.c $(obj)/dtc-src/dtc-parser.tab.h 163 - $(obj)/dtc-src/dtc-lexer.lex.o: $(obj)/dtc-src/dtc-lexer.lex.c $(obj)/dtc-src/dtc-parser.tab.h 164 - 165 - HOSTCFLAGS += -I$(src)/dtc-src/ -I$(src)/libfdt/ 166 - 167 - targets += dtc-src/dtc-parser.tab.c 168 - targets += dtc-src/dtc-lexer.lex.c 169 - 170 - clean-files += dtc-src/dtc-parser.tab.h 171 - 172 - ifdef DTC_GENPARSER 173 - BISON = bison 174 - FLEX = flex 175 - 176 - quiet_cmd_bison = BISON $@ 177 - cmd_bison = $(BISON) -o$@ -d $<; cp $@ $@_shipped 178 - quiet_cmd_flex = FLEX $@ 179 - cmd_flex = $(FLEX) -o$@ $<; cp $@ $@_shipped 180 - 181 - $(obj)/dtc-src/dtc-parser.tab.c: $(src)/dtc-src/dtc-parser.y FORCE 182 - $(call if_changed,bison) 183 - 184 - $(obj)/dtc-src/dtc-parser.tab.h: $(obj)/dtc-src/dtc-parser.tab.c 185 - 186 - $(obj)/dtc-src/dtc-lexer.lex.c: $(src)/dtc-src/dtc-lexer.l FORCE 187 - $(call if_changed,flex) 188 - endif 189 138 190 139 ############# 191 140 # Bits for building various flavours of zImage ··· 324 347 $(call if_changed,wrap,treeboot-$*,,$(obj)/$*.dtb) 325 348 326 349 # Rule to build device tree blobs 327 - $(obj)/%.dtb: $(dtstree)/%.dts $(obj)/dtc 328 - $(obj)/dtc -O dtb -o $(obj)/$*.dtb -b 0 $(DTS_FLAGS) $(dtstree)/$*.dts 350 + DTC = $(objtree)/scripts/dtc/dtc 351 + 352 + $(obj)/%.dtb: $(dtstree)/%.dts 353 + $(DTC) -O dtb -o $(obj)/$*.dtb -b 0 $(DTS_FLAGS) $(dtstree)/$*.dts 329 354 330 355 # If there isn't a platform selected then just strip the vmlinux. 331 356 ifeq (,$(image-y))
arch/powerpc/boot/dtc-src/Makefile.dtc scripts/dtc/Makefile.dtc
arch/powerpc/boot/dtc-src/checks.c scripts/dtc/checks.c
arch/powerpc/boot/dtc-src/data.c scripts/dtc/data.c
arch/powerpc/boot/dtc-src/dtc-lexer.l scripts/dtc/dtc-lexer.l
arch/powerpc/boot/dtc-src/dtc-lexer.lex.c_shipped scripts/dtc/dtc-lexer.lex.c_shipped
arch/powerpc/boot/dtc-src/dtc-parser.tab.c_shipped scripts/dtc/dtc-parser.tab.c_shipped
arch/powerpc/boot/dtc-src/dtc-parser.tab.h_shipped scripts/dtc/dtc-parser.tab.h_shipped
arch/powerpc/boot/dtc-src/dtc-parser.y scripts/dtc/dtc-parser.y
arch/powerpc/boot/dtc-src/dtc.c scripts/dtc/dtc.c
arch/powerpc/boot/dtc-src/dtc.h scripts/dtc/dtc.h
arch/powerpc/boot/dtc-src/flattree.c scripts/dtc/flattree.c
arch/powerpc/boot/dtc-src/fstree.c scripts/dtc/fstree.c
arch/powerpc/boot/dtc-src/libfdt_env.h scripts/dtc/libfdt/libfdt_env.h
arch/powerpc/boot/dtc-src/livetree.c scripts/dtc/livetree.c
arch/powerpc/boot/dtc-src/srcpos.c scripts/dtc/srcpos.c
arch/powerpc/boot/dtc-src/srcpos.h scripts/dtc/srcpos.h
arch/powerpc/boot/dtc-src/treesource.c scripts/dtc/treesource.c
arch/powerpc/boot/dtc-src/version_gen.h scripts/dtc/version_gen.h
arch/powerpc/boot/libfdt/Makefile.libfdt scripts/dtc/libfdt/Makefile.libfdt
arch/powerpc/boot/libfdt/fdt.c scripts/dtc/libfdt/fdt.c
arch/powerpc/boot/libfdt/fdt.h scripts/dtc/libfdt/fdt.h
arch/powerpc/boot/libfdt/fdt_ro.c scripts/dtc/libfdt/fdt_ro.c
arch/powerpc/boot/libfdt/fdt_rw.c scripts/dtc/libfdt/fdt_rw.c
arch/powerpc/boot/libfdt/fdt_strerror.c scripts/dtc/libfdt/fdt_strerror.c
arch/powerpc/boot/libfdt/fdt_sw.c scripts/dtc/libfdt/fdt_sw.c
arch/powerpc/boot/libfdt/fdt_wip.c scripts/dtc/libfdt/fdt_wip.c
arch/powerpc/boot/libfdt/libfdt.h scripts/dtc/libfdt/libfdt.h
arch/powerpc/boot/libfdt/libfdt_internal.h scripts/dtc/libfdt/libfdt_internal.h
+1 -1
arch/powerpc/boot/simpleboot.c
··· 19 19 #include "types.h" 20 20 #include "io.h" 21 21 #include "stdio.h" 22 - #include "libfdt/libfdt.h" 22 + #include <libfdt.h> 23 23 24 24 BSS_STACK(4*1024); 25 25
+1
scripts/Makefile
··· 21 21 subdir-$(CONFIG_MODVERSIONS) += genksyms 22 22 subdir-y += mod 23 23 subdir-$(CONFIG_SECURITY_SELINUX) += selinux 24 + subdir-$(CONFIG_DTC) += dtc 24 25 25 26 # Let clean descend into subdirs 26 27 subdir- += basic kconfig package selinux
+54
scripts/dtc/Makefile
··· 1 + # scripts/dtc makefile 2 + 3 + hostprogs-y := dtc 4 + always := $(hostprogs-y) 5 + 6 + dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \ 7 + srcpos.o checks.o 8 + dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o 9 + 10 + # Source files need to get at the userspace version of libfdt_env.h to compile 11 + 12 + HOSTCFLAGS_DTC := -I$(src) -I$(src)/libfdt 13 + 14 + HOSTCFLAGS_checks.o := $(HOSTCFLAGS_DTC) 15 + HOSTCFLAGS_data.o := $(HOSTCFLAGS_DTC) 16 + HOSTCFLAGS_dtc.o := $(HOSTCFLAGS_DTC) 17 + HOSTCFLAGS_flattree.o := $(HOSTCFLAGS_DTC) 18 + HOSTCFLAGS_fstree.o := $(HOSTCFLAGS_DTC) 19 + HOSTCFLAGS_livetree.o := $(HOSTCFLAGS_DTC) 20 + HOSTCFLAGS_srcpos.o := $(HOSTCFLAGS_DTC) 21 + HOSTCFLAGS_treesource.o := $(HOSTCFLAGS_DTC) 22 + 23 + HOSTCFLAGS_dtc-lexer.lex.o := $(HOSTCFLAGS_DTC) 24 + HOSTCFLAGS_dtc-parser.tab.o := $(HOSTCFLAGS_DTC) 25 + 26 + # dependencies on generated files need to be listed explicitly 27 + $(obj)/dtc-parser.tab.o: $(obj)/dtc-parser.tab.c $(obj)/dtc-parser.tab.h 28 + $(obj)/dtc-lexer.lex.o: $(obj)/dtc-lexer.lex.c $(obj)/dtc-parser.tab.h 29 + 30 + targets += dtc-parser.tab.c dtc-lexer.lex.c 31 + 32 + clean-files += dtc-parser.tab.h 33 + 34 + # GENERATE_PARSER := 1 # Uncomment to rebuild flex/bison output 35 + 36 + ifdef GENERATE_PARSER 37 + 38 + BISON = bison 39 + FLEX = flex 40 + 41 + quiet_cmd_bison = BISON $@ 42 + cmd_bison = $(BISON) -o$@ -d $<; cp $@ $@_shipped 43 + quiet_cmd_flex = FLEX $@ 44 + cmd_flex = $(FLEX) -o$@ $<; cp $@ $@_shipped 45 + 46 + $(obj)/dtc-parser.tab.c: $(src)/dtc-parser.y FORCE 47 + $(call if_changed,bison) 48 + 49 + $(obj)/dtc-parser.tab.h: $(obj)/dtc-parser.tab.c 50 + 51 + $(obj)/dtc-lexer.lex.c: $(src)/dtc-lexer.l FORCE 52 + $(call if_changed,flex) 53 + 54 + endif