diff options
author | Loic Poulain <loic.poulain@linaro.org> | 2017-09-07 14:56:08 +0200 |
---|---|---|
committer | Nicolas Dechesne <nicolas.dechesne@linaro.org> | 2017-09-13 11:33:45 +0200 |
commit | 089944963d354403ab3b6a37b504c29f0949ecdc (patch) | |
tree | 9eb4ab603cbedc303972fb5c410a7a291e2b1f99 | |
parent | 1f680365cbfe2d34d9a0dc4076ec127e20d7d349 (diff) |
dev-tree: Support non-skales DTB if only one appendedrelease/LA.BR.1.2.7-03810-8x16.0+sdboot
If people append a unique DTB which has not been generated
with skales/dtbTool, we consider they expect to use it
without any compatibility check/filtering.
You can generate such boot.img with generic android mkbootimg tool:
$ gzip -c Image > Image.gz
$ cat Image.gz Image.dtb > Image.gz+dtb
$ mkbootimg --kernel ./Image.gz+dtb --ramdisk ./initrd.img \
--output boot.img --pagesize 2048 --base 80000000
--cmdline "root=/dev/mmcblk0p10 rw rootwait console=ttyMSM0,115200n8"
Change-Id: I2334b50136dcc6094fd1e58563a38f03542eadaa
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
(cherry picked from commit 3be1d459a546a24f2bf10b9551663a3e69a8214e)
-rwxr-xr-x | platform/msm_shared/dev_tree.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/platform/msm_shared/dev_tree.c b/platform/msm_shared/dev_tree.c index c7b7f661..a3f867ca 100755 --- a/platform/msm_shared/dev_tree.c +++ b/platform/msm_shared/dev_tree.c @@ -449,7 +449,7 @@ void *dev_tree_appended(void *kernel, uint32_t kernel_size, uint32_t dtb_offset, struct dt_entry_node *dt_entry_queue = NULL; struct dt_entry_node *dt_node_tmp1 = NULL; struct dt_entry_node *dt_node_tmp2 = NULL; - + unsigned dtb_count = 0; /* Initialize the dtb entry node*/ dt_entry_queue = (struct dt_entry_node *) @@ -493,6 +493,19 @@ void *dev_tree_appended(void *kernel, uint32_t kernel_size, uint32_t dtb_offset, /* goto the next device tree if any */ dtb += dtb_size; + dtb_count++; + } + + if (list_is_empty(&dt_entry_queue->node) && (dtb_count == 1)) { + /* Special case: If we only have one DTB appended which has not + * been skales-generated, consider this DTB as the one which is + * expected to be used regardless ok LK compatibility check. + * Force it as the bestmatch. + */ + dprintf(INFO, "Only one appended non-skales DTB, select it.\n"); + + bestmatch_tag = kernel + app_dtb_offset; + bestmatch_tag_size = dtb - (kernel + app_dtb_offset); } best_match_dt_entry = platform_dt_match_best(dt_entry_queue); |