]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
android: boot: support extra command line
authorSafae Ouajih <souajih@baylibre.com>
Sun, 5 Feb 2023 23:50:14 +0000 (00:50 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 4 Apr 2023 18:50:47 +0000 (14:50 -0400)
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>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
boot/image-android.c

index 35243fd5b166170306e63ed97e9524542754294b..a944f0a31aa54aba682f37a1648fac281309b77a 100644 (file)
@@ -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) {