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 | DTC_FLAGS ?= -p 1024 | 6 | DTC_FLAGS ?= -p 1024 |
| 7 | 7 | ||
| 8 | ifneq ($(DTB),) | 8 | ifneq ($(DTB),) |
| 9 | obj-y += linked_dtb.o | 9 | obj-y += $(DTB).dtb.o |
| 10 | endif | 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 | extern char _vectors_end[]; | 8 | extern char _vectors_end[]; |
| 9 | 9 | ||
| 10 | extern char _data_lma[]; | 10 | extern char _data_lma[]; |
| 11 | extern char _fdt_start[], _fdt_end[]; | ||
| 12 | 11 | ||
| 13 | #endif /* _ASM_C6X_SECTIONS_H */ | 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 | notrace void __init machine_init(unsigned long dt_ptr) | 270 | notrace void __init machine_init(unsigned long dt_ptr) |
| 271 | { | 271 | { |
| 272 | void *dtb = __va(dt_ptr); | 272 | void *dtb = __va(dt_ptr); |
| 273 | void *fdt = _fdt_start; | 273 | void *fdt = __dtb_start; |
| 274 | 274 | ||
| 275 | /* interrupts must be masked */ | 275 | /* interrupts must be masked */ |
| 276 | set_creg(IER, 2); | 276 | set_creg(IER, 2); |
| @@ -363,7 +363,7 @@ void __init setup_arch(char **cmdline_p) · 86 unmodified lines | |||
| 363 | memory_end >> PAGE_SHIFT); | 363 | memory_end >> PAGE_SHIFT); |
| 364 | memblock_reserve(memory_start, bootmap_size); | 364 | memblock_reserve(memory_start, bootmap_size); |
| 365 | 365 | ||
| 366 | unflatten_device_tree(); | 366 | unflatten_and_copy_device_tree(); |
| 367 | 367 | ||
| 368 | c6x_cache_init(); | 368 | c6x_cache_init(); |
| 369 | 369 | ||
| @@ -90,16 +90,6 @@ SECTIONS · 89 unmodified lines | |||
| 90 | *(.switch) | 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 | _etext = .; | 93 | _etext = .; |
| 104 | 94 | ||
| 105 | /* | 95 | /* |