From 3be1d459a546a24f2bf10b9551663a3e69a8214e Mon Sep 17 00:00:00 2001 From: Loic Poulain Date: Thu, 7 Sep 2017 14:56:08 +0200 Subject: dev-tree: Support non-skales DTB if only one appended 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 --- platform/msm_shared/dev_tree.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3