EmbeddedPkg/AndroidBoot: boot android kernel from storage

Add an android kernel loader that could load kernel from storage
device.
This android boot image BDS add addtitional cmdline/dtb/ramfs
support besides kernel that is introduced by Android boot header.

This patch is derived from Haojian's code as below link.
https://patches.linaro.org/patch/94683/

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jun Nie <jun.nie@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
Jun Nie
2017-08-17 20:58:59 +08:00
committed by Leif Lindholm
parent ce13d2d8c8
commit fa74dd2217
8 changed files with 779 additions and 0 deletions

View File

@ -0,0 +1,47 @@
/** @file
Copyright (c) 2017, Linaro. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef __ANDROID_BOOTIMG_PROTOCOL_H__
#define __ANDROID_BOOTIMG_PROTOCOL_H__
//
// Protocol interface structure
//
typedef struct _ANDROID_BOOTIMG_PROTOCOL ANDROID_BOOTIMG_PROTOCOL;
//
// Function Prototypes
//
typedef
EFI_STATUS
(EFIAPI *ANDROID_BOOTIMG_APPEND_KERNEL_ARGS) (
IN CHAR16 *Args,
IN UINTN Size
);
typedef
EFI_STATUS
(EFIAPI *ANDROID_BOOTIMG_UPDATE_DTB) (
IN EFI_PHYSICAL_ADDRESS OrigDtbBase;
OUT EFI_PHYSICAL_ADDRESS *NewDtbBase;
);
struct _ANDROID_BOOTIMG_PROTOCOL {
ANDROID_BOOTIMG_APPEND_KERNEL_ARGS AppendArgs;
ANDROID_BOOTIMG_UPDATE_DTB UpdateDtb;
};
extern EFI_GUID gAndroidBootImgProtocolGuid;
#endif /* __ANDROID_BOOTIMG_PROTOCOL_H__ */