summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Poulain <loic.poulain@linaro.org>2017-09-07 14:56:08 +0200
committerNicolas Dechesne <nicolas.dechesne@linaro.org>2017-09-13 11:33:45 +0200
commit089944963d354403ab3b6a37b504c29f0949ecdc (patch)
tree9eb4ab603cbedc303972fb5c410a7a291e2b1f99
parent1f680365cbfe2d34d9a0dc4076ec127e20d7d349 (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-xplatform/msm_shared/dev_tree.c15
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);