diff mbox series

[v3,12/19] android: boot: support extra command line

Message ID 20230205235021.355410-13-souajih@baylibre.com
State Accepted
Commit b36b227b6a37695ab39306341c3a977cf9b081b6
Delegated to: Tom Rini
Headers show
Series Support android boot image v3/v4 | expand

Commit Message

Safae Ouajih Feb. 5, 2023, 11:50 p.m. UTC
In version 3 and 4 of boot image header, the vendor specific
command line are located in vendor boot image. Thus, use
extra command line to add those cmd to bootargs.

Signed-off-by: Safae Ouajih <souajih@baylibre.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
---
 boot/image-android.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
diff mbox series

Patch

diff --git a/boot/image-android.c b/boot/image-android.c
index 35243fd5b1..a944f0a31a 100644
--- a/boot/image-android.c
+++ b/boot/image-android.c
@@ -55,6 +55,7 @@  static void android_vendor_boot_image_v3_v4_parse_hdr(const struct andr_vnd_boot
 	 * The header takes a full page, the remaining components are aligned
 	 * on page boundary.
 	 */
+	data->kcmdline_extra = hdr->cmdline;
 	data->tags_addr = hdr->tags_addr;
 	data->image_name = hdr->name;
 	data->kernel_addr = hdr->kernel_addr;
@@ -233,6 +234,11 @@  int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr,
 		len += strlen(img_data.kcmdline);
 	}
 
+	if (img_data.kcmdline_extra) {
+		printf("Kernel extra command line: %s\n", img_data.kcmdline_extra);
+		len += strlen(img_data.kcmdline_extra);
+	}
+
 	char *bootargs = env_get("bootargs");
 	if (bootargs)
 		len += strlen(bootargs);
@@ -252,6 +258,11 @@  int android_image_get_kernel(const struct andr_boot_img_hdr_v0 *hdr,
 	if (*img_data.kcmdline)
 		strcat(newbootargs, img_data.kcmdline);
 
+	if (img_data.kcmdline_extra) {
+		strcat(newbootargs, " ");
+		strcat(newbootargs, img_data.kcmdline_extra);
+	}
+
 	env_set("bootargs", newbootargs);
 
 	if (os_data) {