summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorHerve Jourdain <herve.jourdain@neuf.fr>2016-07-21 06:00:38 +0800
committerAndrei Gherzan <andrei@gherzan.ro>2016-09-21 16:47:26 +0100
commitd98f2a74db536e1f350ead8723adde47e6ae89d2 (patch)
treefd0b951850fecb842ebf08c736394728cc6cb658 /classes
parent09b76a43f6f6852406de385a45f472c52b6a8571 (diff)
downloadmeta-raspberrypi-d98f2a74db536e1f350ead8723adde47e6ae89d2.tar.gz
linux-raspberrypi-base.bbclass: support for .dtbo files for dtb overlays
Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb. Add support for both variants of overlays ("-overlay.dtb" and ".dtbo") Change which variant needs to be supported based on the kernel version CAUTION: when called from IMAGE_CMD_rpi-sdimg, 'TMPDIR' is not set, causing 'STAGING_KERNEL_BUILDDIR' to not be expanded, causing get_kernelversion_file() to fail! To avoid this problem, get_dts() and split_overlays() MUST be called with the kernel version parameter set, when called from IMAGE_CMD_rpi-sdimg! Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
Diffstat (limited to 'classes')
-rw-r--r--classes/linux-raspberrypi-base.bbclass19
1 files changed, 12 insertions, 7 deletions
diff --git a/classes/linux-raspberrypi-base.bbclass b/classes/linux-raspberrypi-base.bbclass
index 40beef1..930fc44 100644
--- a/classes/linux-raspberrypi-base.bbclass
+++ b/classes/linux-raspberrypi-base.bbclass
@@ -1,7 +1,8 @@
1inherit linux-kernel-base 1inherit linux-kernel-base
2 2
3
4def get_dts(d, ver): 3def get_dts(d, ver):
4 import re
5
5 staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True) 6 staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR", True)
6 dts = d.getVar("KERNEL_DEVICETREE", True) 7 dts = d.getVar("KERNEL_DEVICETREE", True)
7 8
@@ -20,20 +21,24 @@ def get_dts(d, ver):
20 21
21 # Always turn off device tree support for kernel's < 3.18 22 # Always turn off device tree support for kernel's < 3.18
22 try: 23 try:
23 if int(min_ver[0]) <= 3: 24 if int(min_ver[0]) >= 4:
24 if int(min_ver[1]) < 18: 25 if (int(min_ver[1]) < 4) or (int(min_ver[1]) == 4 and int(min_ver[2]) < 6):
25 dts = "" 26 dts = ' '.join([(re.sub(r'(.*)\.dtbo$', r'\1-overlay.dtb', x)) for x in dts.split()])
27 elif int(min_ver[1]) < 18:
28 dts = ""
26 except IndexError: 29 except IndexError:
27 min_ver = None 30 min_ver = None
28 31
29 return dts 32 return dts
30 33
31 34
32def split_overlays(d, out): 35def split_overlays(d, ver, out):
33 dts = get_dts(d, None) 36 dts = get_dts(d, ver)
34 if out: 37 if out:
35 overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d) 38 overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d)
39 overlays = oe.utils.str_filter_out('\S+\.dtbo$', overlays, d)
36 else: 40 else:
37 overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d) 41 overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d) + \
42 " " + oe.utils.str_filter('\S+\.dtbo$', dts, d)
38 43
39 return overlays 44 return overlays