Commit 26c9134a authored by Rob Herring's avatar Rob Herring

Merge branch 'dt/dtbo-rename' into dt/next

parents ae5a16c8 fa9665ef
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
obj-y += testcases.dtb.o obj-y += testcases.dtbo.o
obj-$(CONFIG_OF_OVERLAY) += overlay.dtb.o \ obj-$(CONFIG_OF_OVERLAY) += overlay.dtbo.o \
overlay_0.dtb.o \ overlay_0.dtbo.o \
overlay_1.dtb.o \ overlay_1.dtbo.o \
overlay_2.dtb.o \ overlay_2.dtbo.o \
overlay_3.dtb.o \ overlay_3.dtbo.o \
overlay_4.dtb.o \ overlay_4.dtbo.o \
overlay_5.dtb.o \ overlay_5.dtbo.o \
overlay_6.dtb.o \ overlay_6.dtbo.o \
overlay_7.dtb.o \ overlay_7.dtbo.o \
overlay_8.dtb.o \ overlay_8.dtbo.o \
overlay_9.dtb.o \ overlay_9.dtbo.o \
overlay_10.dtb.o \ overlay_10.dtbo.o \
overlay_11.dtb.o \ overlay_11.dtbo.o \
overlay_12.dtb.o \ overlay_12.dtbo.o \
overlay_13.dtb.o \ overlay_13.dtbo.o \
overlay_15.dtb.o \ overlay_15.dtbo.o \
overlay_16.dtb.o \ overlay_16.dtbo.o \
overlay_17.dtb.o \ overlay_17.dtbo.o \
overlay_18.dtb.o \ overlay_18.dtbo.o \
overlay_19.dtb.o \ overlay_19.dtbo.o \
overlay_20.dtb.o \ overlay_20.dtbo.o \
overlay_bad_add_dup_node.dtb.o \ overlay_bad_add_dup_node.dtbo.o \
overlay_bad_add_dup_prop.dtb.o \ overlay_bad_add_dup_prop.dtbo.o \
overlay_bad_phandle.dtb.o \ overlay_bad_phandle.dtbo.o \
overlay_bad_symbol.dtb.o \ overlay_bad_symbol.dtbo.o \
overlay_base.dtb.o \ overlay_base.dtbo.o \
overlay_gpio_01.dtb.o \ overlay_gpio_01.dtbo.o \
overlay_gpio_02a.dtb.o \ overlay_gpio_02a.dtbo.o \
overlay_gpio_02b.dtb.o \ overlay_gpio_02b.dtbo.o \
overlay_gpio_03.dtb.o \ overlay_gpio_03.dtbo.o \
overlay_gpio_04a.dtb.o \ overlay_gpio_04a.dtbo.o \
overlay_gpio_04b.dtb.o overlay_gpio_04b.dtbo.o
# enable creation of __symbols__ node # enable creation of __symbols__ node
DTC_FLAGS_overlay += -@ DTC_FLAGS_overlay += -@
......
...@@ -1423,12 +1423,12 @@ static int __init unittest_data_add(void) ...@@ -1423,12 +1423,12 @@ static int __init unittest_data_add(void)
void *unittest_data_align; void *unittest_data_align;
struct device_node *unittest_data_node = NULL, *np; struct device_node *unittest_data_node = NULL, *np;
/* /*
* __dtb_testcases_begin[] and __dtb_testcases_end[] are magically * __dtbo_testcases_begin[] and __dtbo_testcases_end[] are magically
* created by cmd_dt_S_dtb in scripts/Makefile.lib * created by cmd_dt_S_dtbo in scripts/Makefile.lib
*/ */
extern uint8_t __dtb_testcases_begin[]; extern uint8_t __dtbo_testcases_begin[];
extern uint8_t __dtb_testcases_end[]; extern uint8_t __dtbo_testcases_end[];
const int size = __dtb_testcases_end - __dtb_testcases_begin; const int size = __dtbo_testcases_end - __dtbo_testcases_begin;
int rc; int rc;
void *ret; void *ret;
...@@ -1443,7 +1443,7 @@ static int __init unittest_data_add(void) ...@@ -1443,7 +1443,7 @@ static int __init unittest_data_add(void)
return -ENOMEM; return -ENOMEM;
unittest_data_align = PTR_ALIGN(unittest_data, FDT_ALIGN_SIZE); unittest_data_align = PTR_ALIGN(unittest_data, FDT_ALIGN_SIZE);
memcpy(unittest_data_align, __dtb_testcases_begin, size); memcpy(unittest_data_align, __dtbo_testcases_begin, size);
ret = of_fdt_unflatten_tree(unittest_data_align, NULL, &unittest_data_node); ret = of_fdt_unflatten_tree(unittest_data_align, NULL, &unittest_data_node);
if (!ret) { if (!ret) {
...@@ -3003,24 +3003,24 @@ static inline void __init of_unittest_overlay(void) { } ...@@ -3003,24 +3003,24 @@ static inline void __init of_unittest_overlay(void) { }
#ifdef CONFIG_OF_OVERLAY #ifdef CONFIG_OF_OVERLAY
/* /*
* __dtb_ot_begin[] and __dtb_ot_end[] are created by cmd_dt_S_dtb * __dtbo_##overlay_name##_begin[] and __dtbo_##overlay_name##_end[] are
* in scripts/Makefile.lib * created by cmd_dt_S_dtbo in scripts/Makefile.lib
*/ */
#define OVERLAY_INFO_EXTERN(name) \ #define OVERLAY_INFO_EXTERN(overlay_name) \
extern uint8_t __dtb_##name##_begin[]; \ extern uint8_t __dtbo_##overlay_name##_begin[]; \
extern uint8_t __dtb_##name##_end[] extern uint8_t __dtbo_##overlay_name##_end[]
#define OVERLAY_INFO(overlay_name, expected) \ #define OVERLAY_INFO(overlay_name, expected) \
{ .dtb_begin = __dtb_##overlay_name##_begin, \ { .dtbo_begin = __dtbo_##overlay_name##_begin, \
.dtb_end = __dtb_##overlay_name##_end, \ .dtbo_end = __dtbo_##overlay_name##_end, \
.expected_result = expected, \ .expected_result = expected, \
.name = #overlay_name, \ .name = #overlay_name, \
} }
struct overlay_info { struct overlay_info {
uint8_t *dtb_begin; uint8_t *dtbo_begin;
uint8_t *dtb_end; uint8_t *dtbo_end;
int expected_result; int expected_result;
int ovcs_id; int ovcs_id;
char *name; char *name;
...@@ -3094,7 +3094,7 @@ static struct overlay_info overlays[] = { ...@@ -3094,7 +3094,7 @@ static struct overlay_info overlays[] = {
OVERLAY_INFO(overlay_bad_phandle, -EINVAL), OVERLAY_INFO(overlay_bad_phandle, -EINVAL),
OVERLAY_INFO(overlay_bad_symbol, -EINVAL), OVERLAY_INFO(overlay_bad_symbol, -EINVAL),
/* end marker */ /* end marker */
{.dtb_begin = NULL, .dtb_end = NULL, .expected_result = 0, .name = NULL} {.dtbo_begin = NULL, .dtbo_end = NULL, .expected_result = 0, .name = NULL}
}; };
static struct device_node *overlay_base_root; static struct device_node *overlay_base_root;
...@@ -3151,13 +3151,13 @@ void __init unittest_unflatten_overlay_base(void) ...@@ -3151,13 +3151,13 @@ void __init unittest_unflatten_overlay_base(void)
return; return;
} }
data_size = info->dtb_end - info->dtb_begin; data_size = info->dtbo_end - info->dtbo_begin;
if (!data_size) { if (!data_size) {
pr_err("No dtb 'overlay_base' to attach\n"); pr_err("No dtb 'overlay_base' to attach\n");
return; return;
} }
size = fdt_totalsize(info->dtb_begin); size = fdt_totalsize(info->dtbo_begin);
if (size != data_size) { if (size != data_size) {
pr_err("dtb 'overlay_base' header totalsize != actual size"); pr_err("dtb 'overlay_base' header totalsize != actual size");
return; return;
...@@ -3169,7 +3169,7 @@ void __init unittest_unflatten_overlay_base(void) ...@@ -3169,7 +3169,7 @@ void __init unittest_unflatten_overlay_base(void)
return; return;
} }
memcpy(new_fdt, info->dtb_begin, size); memcpy(new_fdt, info->dtbo_begin, size);
__unflatten_device_tree(new_fdt, NULL, &overlay_base_root, __unflatten_device_tree(new_fdt, NULL, &overlay_base_root,
dt_alloc_memory, true); dt_alloc_memory, true);
...@@ -3204,11 +3204,11 @@ static int __init overlay_data_apply(const char *overlay_name, int *ovcs_id) ...@@ -3204,11 +3204,11 @@ static int __init overlay_data_apply(const char *overlay_name, int *ovcs_id)
return 0; return 0;
} }
size = info->dtb_end - info->dtb_begin; size = info->dtbo_end - info->dtbo_begin;
if (!size) if (!size)
pr_err("no overlay data for %s\n", overlay_name); pr_err("no overlay data for %s\n", overlay_name);
ret = of_overlay_fdt_apply(info->dtb_begin, size, &info->ovcs_id); ret = of_overlay_fdt_apply(info->dtbo_begin, size, &info->ovcs_id);
if (ovcs_id) if (ovcs_id)
*ovcs_id = info->ovcs_id; *ovcs_id = info->ovcs_id;
if (ret < 0) if (ret < 0)
......
...@@ -48,13 +48,13 @@ For Raspbian users only ...@@ -48,13 +48,13 @@ For Raspbian users only
======================= =======================
Since Raspbian supports device tree overlays, you may use an overlay instead Since Raspbian supports device tree overlays, you may use an overlay instead
of editing your boards device tree. of editing your boards device tree.
To use the overlay, you need to compile the file pi433-overlay.dts which can To use the overlay, you need to compile the file pi433-overlay.dtso which can
be found alongside this documentation. be found alongside this documentation.
The file needs to be compiled - either manually or by integration in your kernel The file needs to be compiled - either manually or by integration in your kernel
source tree. For a manual compile, you may use a command line like the following: source tree. For a manual compile, you may use a command line like the following:
'linux/scripts/dtc/dtc -@ -I dts -O dtb -o pi433.dtbo pi433-overlay.dts' 'linux/scripts/dtc/dtc -@ -I dts -O dtb -o pi433.dtbo pi433-overlay.dtso'
For compiling inside of the kernel tree, you need to copy pi433-overlay.dts to For compiling inside of the kernel tree, you need to copy pi433-overlay.dtso to
arch/arm/boot/dts/overlays and you need to add the file to the list of files arch/arm/boot/dts/overlays and you need to add the file to the list of files
in the Makefile over there. Execute 'make dtbs' in kernel tree root to make the in the Makefile over there. Execute 'make dtbs' in kernel tree root to make the
kernel make files compile the device tree overlay for you. kernel make files compile the device tree overlay for you.
......
...@@ -362,7 +362,7 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget)) ...@@ -362,7 +362,7 @@ DTC_FLAGS += $(DTC_FLAGS_$(basetarget))
DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@) DTC_FLAGS += $(if $(filter $(patsubst $(obj)/%,%,$@), $(base-dtb-y)), -@)
# Generate an assembly file to wrap the output of the device tree compiler # Generate an assembly file to wrap the output of the device tree compiler
quiet_cmd_dt_S_dtb= DTB $@ quiet_cmd_dt_S_dtb= DTBS $@
cmd_dt_S_dtb= \ cmd_dt_S_dtb= \
{ \ { \
echo '\#include <asm-generic/vmlinux.lds.h>'; \ echo '\#include <asm-generic/vmlinux.lds.h>'; \
...@@ -379,6 +379,24 @@ cmd_dt_S_dtb= \ ...@@ -379,6 +379,24 @@ cmd_dt_S_dtb= \
$(obj)/%.dtb.S: $(obj)/%.dtb FORCE $(obj)/%.dtb.S: $(obj)/%.dtb FORCE
$(call if_changed,dt_S_dtb) $(call if_changed,dt_S_dtb)
# Generate an assembly file to wrap the output of the device tree compiler
quiet_cmd_dt_S_dtbo= DTBOS $@
cmd_dt_S_dtbo= \
{ \
echo '\#include <asm-generic/vmlinux.lds.h>'; \
echo '.section .dtb.init.rodata,"a"'; \
echo '.balign STRUCT_ALIGNMENT'; \
echo '.global __dtbo_$(subst -,_,$(*F))_begin'; \
echo '__dtbo_$(subst -,_,$(*F))_begin:'; \
echo '.incbin "$<" '; \
echo '__dtbo_$(subst -,_,$(*F))_end:'; \
echo '.global __dtbo_$(subst -,_,$(*F))_end'; \
echo '.balign STRUCT_ALIGNMENT'; \
} > $@
$(obj)/%.dtbo.S: $(obj)/%.dtbo FORCE
$(call if_changed,dt_S_dtbo)
quiet_cmd_dtc = DTC $@ quiet_cmd_dtc = DTC $@
cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
$(DTC) -o $@ -b 0 \ $(DTC) -o $@ -b 0 \
...@@ -412,6 +430,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE ...@@ -412,6 +430,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
$(call if_changed_dep,dtc) $(call if_changed_dep,dtc)
$(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE
$(call if_changed_dep,dtc)
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
# Bzip2 # Bzip2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment