Using the common build support for built-in dtb files just requires adding a .dtb.o target to obj-y. The dtb now needs to be copied when unflattened because an init section is used now.
Unified · Split
| @@ -6,14 +6,5 @@ · 5 unmodified lines | ||
| 6 | 6 | DTC_FLAGS ?= -p 1024 |
| 7 | 7 | |
| 8 | 8 | ifneq ($(DTB),) |
| 9 | −obj-y += linked_dtb.o | |
| 9 | +obj-y += $(DTB).dtb.o | |
| 10 | 10 | endif |
| 11 | − | |
| 12 | −quiet_cmd_cp = CP $< $@$2 | |
| 13 | − cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false) | |
| 14 | − | |
| 15 | −# Generate builtin.dtb from $(DTB).dtb | |
| 16 | −$(obj)/builtin.dtb: $(obj)/$(DTB).dtb | |
| 17 | − $(call if_changed,cp) | |
| 18 | − | |
| 19 | −$(obj)/linked_dtb.o: $(obj)/builtin.dtb | |
| @@ -1,2 +0,0 @@ | ||
| 1 | −.section __fdt_blob,"a" | |
| 2 | −.incbin "arch/c6x/boot/dts/builtin.dtb" | |
| @@ -8,6 +8,5 @@ extern char _vectors_start[]; · 7 unmodified lines | ||
| 8 | 8 | extern char _vectors_end[]; |
| 9 | 9 | |
| 10 | 10 | extern char _data_lma[]; |
| 11 | −extern char _fdt_start[], _fdt_end[]; | |
| 12 | 11 | |
| 13 | 12 | #endif /* _ASM_C6X_SECTIONS_H */ |
| @@ -270,7 +270,7 @@ int __init c6x_add_memory(phys_addr_t start, unsigned long size) · 269 unmodified lines | ||
| 270 | 270 | notrace void __init machine_init(unsigned long dt_ptr) |
| 271 | 271 | { |
| 272 | 272 | void *dtb = __va(dt_ptr); |
| 273 | − void *fdt = _fdt_start; | |
| 273 | + void *fdt = __dtb_start; | |
| 274 | 274 | |
| 275 | 275 | /* interrupts must be masked */ |
| 276 | 276 | set_creg(IER, 2); |
| @@ -363,7 +363,7 @@ void __init setup_arch(char **cmdline_p) · 86 unmodified lines | ||
| 363 | 363 | memory_end >> PAGE_SHIFT); |
| 364 | 364 | memblock_reserve(memory_start, bootmap_size); |
| 365 | 365 | |
| 366 | − unflatten_device_tree(); | |
| 366 | + unflatten_and_copy_device_tree(); | |
| 367 | 367 | |
| 368 | 368 | c6x_cache_init(); |
| 369 | 369 | |
| @@ -90,16 +90,6 @@ SECTIONS · 89 unmodified lines | ||
| 90 | 90 | *(.switch) |
| 91 | 91 | } |
| 92 | 92 | |
| 93 | − . = ALIGN (8) ; | |
| 94 | − __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET) | |
| 95 | − { | |
| 96 | − _fdt_start = . ; /* place for fdt blob */ | |
| 97 | − *(__fdt_blob) ; /* Any link-placed DTB */ | |
| 98 | − BYTE(0); /* section always has contents */ | |
| 99 | − . = _fdt_start + 0x4000; /* Pad up to 16kbyte */ | |
| 100 | − _fdt_end = . ; | |
| 101 | − } | |
| 102 | − | |
| 103 | 93 | _etext = .; |
| 104 | 94 | |
| 105 | 95 | /* |