Message ID | 20180127055909.12962-2-bin.chen@linaro.org |
---|---|
State | Accepted |
Commit | 104816142f9c6a4c8c164e7541a3424bcf5e8e91 |
Headers | show |
Series | Android and arm64 improvement | expand |
On 01/27/2018 01:59 PM, Bin Chen wrote: > The second area of android image was intended to put a 2nd stage > bootloader but in practice were rarely used (in my knowledge). > > An proposal was made to the AOSP to (re)use the second area as the dtb[1], > This patch itself doesn't depend on that proposal being accepted but it won't > be that helpful as well if that proposal won't be accepted. But don't do > any harm as well. > > [1] https://android-review.googlesource.com/#/c/417447/ > Signed-off-by: Bin Chen <bin.chen@linaro.org> > Reviewed-by: Tom Rini <trini@konsulko.com> Looks good to me, Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Thanks, - Kever > --- > common/image-android.c | 19 +++++++++++++++++++ > include/image.h | 2 ++ > 2 files changed, 21 insertions(+) > > diff --git a/common/image-android.c b/common/image-android.c > index e74d0aafca..5ad3a1fa38 100644 > --- a/common/image-android.c > +++ b/common/image-android.c > @@ -146,6 +146,25 @@ int android_image_get_ramdisk(const struct andr_img_hdr *hdr, > return 0; > } > > +int android_image_get_second(const struct andr_img_hdr *hdr, > + ulong *second_data, ulong *second_len) > +{ > + if (!hdr->second_size) { > + *second_data = *second_len = 0; > + return -1; > + } > + > + *second_data = (unsigned long)hdr; > + *second_data += hdr->page_size; > + *second_data += ALIGN(hdr->kernel_size, hdr->page_size); > + *second_data += ALIGN(hdr->ramdisk_size, hdr->page_size); > + > + printf("second address is 0x%lx\n",*second_data); > + > + *second_len = hdr->second_size; > + return 0; > +} > + > #if !defined(CONFIG_SPL_BUILD) > /** > * android_print_contents - prints out the contents of the Android format image > diff --git a/include/image.h b/include/image.h > index b2b23a96f1..c8ce4da901 100644 > --- a/include/image.h > +++ b/include/image.h > @@ -1263,6 +1263,8 @@ int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify, > ulong *os_data, ulong *os_len); > int android_image_get_ramdisk(const struct andr_img_hdr *hdr, > ulong *rd_data, ulong *rd_len); > +int android_image_get_second(const struct andr_img_hdr *hdr, > + ulong *second_data, ulong *second_len); > ulong android_image_get_end(const struct andr_img_hdr *hdr); > ulong android_image_get_kload(const struct andr_img_hdr *hdr); > void android_print_contents(const struct andr_img_hdr *hdr);
On Sat, Jan 27, 2018 at 04:59:08PM +1100, Bin Chen wrote: > The second area of android image was intended to put a 2nd stage > bootloader but in practice were rarely used (in my knowledge). > > An proposal was made to the AOSP to (re)use the second area as the dtb[1], > This patch itself doesn't depend on that proposal being accepted but it won't > be that helpful as well if that proposal won't be accepted. But don't do > any harm as well. > > [1] https://android-review.googlesource.com/#/c/417447/ > Signed-off-by: Bin Chen <bin.chen@linaro.org> > Reviewed-by: Tom Rini <trini@konsulko.com> > Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Applied to u-boot/master, thanks! -- Tom
diff --git a/common/image-android.c b/common/image-android.c index e74d0aafca..5ad3a1fa38 100644 --- a/common/image-android.c +++ b/common/image-android.c @@ -146,6 +146,25 @@ int android_image_get_ramdisk(const struct andr_img_hdr *hdr, return 0; } +int android_image_get_second(const struct andr_img_hdr *hdr, + ulong *second_data, ulong *second_len) +{ + if (!hdr->second_size) { + *second_data = *second_len = 0; + return -1; + } + + *second_data = (unsigned long)hdr; + *second_data += hdr->page_size; + *second_data += ALIGN(hdr->kernel_size, hdr->page_size); + *second_data += ALIGN(hdr->ramdisk_size, hdr->page_size); + + printf("second address is 0x%lx\n",*second_data); + + *second_len = hdr->second_size; + return 0; +} + #if !defined(CONFIG_SPL_BUILD) /** * android_print_contents - prints out the contents of the Android format image diff --git a/include/image.h b/include/image.h index b2b23a96f1..c8ce4da901 100644 --- a/include/image.h +++ b/include/image.h @@ -1263,6 +1263,8 @@ int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify, ulong *os_data, ulong *os_len); int android_image_get_ramdisk(const struct andr_img_hdr *hdr, ulong *rd_data, ulong *rd_len); +int android_image_get_second(const struct andr_img_hdr *hdr, + ulong *second_data, ulong *second_len); ulong android_image_get_end(const struct andr_img_hdr *hdr); ulong android_image_get_kload(const struct andr_img_hdr *hdr); void android_print_contents(const struct andr_img_hdr *hdr);