diff options
| author | Herve Jourdain <herve.jourdain@neuf.fr> | 2016-07-21 06:00:38 +0800 |
|---|---|---|
| committer | Andrei Gherzan <andrei@gherzan.ro> | 2016-09-21 16:47:26 +0100 |
| commit | d98f2a74db536e1f350ead8723adde47e6ae89d2 (patch) | |
| tree | fd0b951850fecb842ebf08c736394728cc6cb658 | |
| parent | 09b76a43f6f6852406de385a45f472c52b6a8571 (diff) | |
| download | meta-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>
| -rw-r--r-- | classes/linux-raspberrypi-base.bbclass | 19 |
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 @@ | |||
| 1 | inherit linux-kernel-base | 1 | inherit linux-kernel-base |
| 2 | 2 | ||
| 3 | |||
| 4 | def get_dts(d, ver): | 3 | def 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 | ||
| 32 | def split_overlays(d, out): | 35 | def 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 |
