diff options
Diffstat (limited to 'meta-ti-bsp/recipes-kernel/linux/ti-kernel-devicetree-prefix.inc')
-rw-r--r-- | meta-ti-bsp/recipes-kernel/linux/ti-kernel-devicetree-prefix.inc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/meta-ti-bsp/recipes-kernel/linux/ti-kernel-devicetree-prefix.inc b/meta-ti-bsp/recipes-kernel/linux/ti-kernel-devicetree-prefix.inc new file mode 100644 index 00000000..04c91004 --- /dev/null +++ b/meta-ti-bsp/recipes-kernel/linux/ti-kernel-devicetree-prefix.inc @@ -0,0 +1,42 @@ + +def get_dtbs_from_kernel(dts_dir, dts_prefix): + import os + import glob + matches = [] + + for prefix in dts_prefix.split(): + filenames = glob.glob(dts_dir + prefix + '*.dts') + filenames += glob.glob(dts_dir + prefix + '*.dtso') + for filename in filenames: + # Before v6.2 kernels DTB Overlays shared the same name as DTB files + # so we need to search the file to find the type + with open(filename) as f: + file_postfix = '.dtbo' if '/plugin/;' in f.read() else '.dtb' + filename = os.path.split(filename)[1] + filename = os.path.splitext(filename)[0] + file_postfix + filename = os.path.join(os.path.split(prefix)[0], filename) + matches.append(filename) + return ' '.join(matches) + +def get_merge_dtbs_from_kernel(dts_dir, dts_pattern): + import os + matches = [] + if dts_dir == "": + return ' ' + for pattern in dts_pattern.split(): + pattern_dir = os.path.split(pattern)[0] + pattern_target = os.path.split(pattern)[1].replace(".","-") + "s" + makefile = dts_dir + "/" + pattern_dir + "/Makefile" + if os.path.exists(makefile): + with open(makefile) as f: + if pattern_target in f.read(): + matches.append(pattern) + return ' '.join(matches) + +KERNEL_DEVICETREE_DTBMERGE ?= "" + +KERNEL_DEVICETREE = " \ + ${@get_dtbs_from_kernel('${S}/arch/${ARCH}/boot/dts/', '${KERNEL_DEVICETREE_PREFIX}')} \ + ${@get_merge_dtbs_from_kernel('${S}/arch/${ARCH}/boot/dts/', '${KERNEL_DEVICETREE_DTBMERGE}')} \ +" + |