1a0e58cf2SKever Yang /* 2a0e58cf2SKever Yang * (C) Copyright 2017 Rockchip Electronics Co., Ltd 3a0e58cf2SKever Yang * 4a0e58cf2SKever Yang * SPDX-License-Identifier: GPL-2.0+ 5a0e58cf2SKever Yang */ 6a0e58cf2SKever Yang 7a0e58cf2SKever Yang #include <common.h> 8a0e58cf2SKever Yang #include <android_bootloader.h> 9*91c73fb4Sqiujian #include <attestation_key.h> 10a0e58cf2SKever Yang #include <boot_rkimg.h> 11a0e58cf2SKever Yang 12a0e58cf2SKever Yang static int do_boot_rockchip(cmd_tbl_t *cmdtp, int flag, int argc, 13a0e58cf2SKever Yang char * const argv[]) 14a0e58cf2SKever Yang { 15a0e58cf2SKever Yang disk_partition_t part_info; 16a0e58cf2SKever Yang struct blk_desc *dev_desc; 17a0e58cf2SKever Yang int mode = 0; 18a0e58cf2SKever Yang char *boot_partname = PART_BOOT; 19a0e58cf2SKever Yang int ret = 0; 20a0e58cf2SKever Yang 21a0e58cf2SKever Yang dev_desc = rockchip_get_bootdev(); 22*91c73fb4Sqiujian 23*91c73fb4Sqiujian #ifdef CONFIG_OPTEE_CLIENT 24*91c73fb4Sqiujian disk_partition_t misc_part_info; 25*91c73fb4Sqiujian 26*91c73fb4Sqiujian /* load attestation key from misc partition. */ 27*91c73fb4Sqiujian ret = part_get_info_by_name(dev_desc, "misc", 28*91c73fb4Sqiujian &misc_part_info); 29*91c73fb4Sqiujian if (ret < 0) 30*91c73fb4Sqiujian printf("%s Could not find misc partition\n", __func__); 31*91c73fb4Sqiujian else 32*91c73fb4Sqiujian load_attestation_key(dev_desc, &misc_part_info); 33*91c73fb4Sqiujian #endif 34*91c73fb4Sqiujian 35a0e58cf2SKever Yang mode = rockchip_get_boot_mode(); 367ad0afacSKever Yang if (mode == BOOT_MODE_RECOVERY) { 37a0e58cf2SKever Yang boot_partname = PART_RECOVERY; 387ad0afacSKever Yang printf("%s boot from Recovery partition!\n", __func__); 397ad0afacSKever Yang } 40a0e58cf2SKever Yang ret = part_get_info_by_name(dev_desc, boot_partname, &part_info); 41a0e58cf2SKever Yang 42a0e58cf2SKever Yang if(boot_rockchip_image(dev_desc, &part_info)) 43a0e58cf2SKever Yang ret = CMD_RET_FAILURE; 44a0e58cf2SKever Yang 45a0e58cf2SKever Yang return ret; 46a0e58cf2SKever Yang } 47a0e58cf2SKever Yang 48a0e58cf2SKever Yang U_BOOT_CMD( 4932af749aSKever Yang bootrkp, CONFIG_SYS_MAXARGS, 1, do_boot_rockchip, 5032af749aSKever Yang "Boot Linux Image from rockchip image type", 5132af749aSKever Yang "kernel.img: zImage/Image\n" 5232af749aSKever Yang "boot.img: ramdisk\n" 5332af749aSKever Yang "resource.img: dtb, u-boot logo, kernel logo" 54a0e58cf2SKever Yang ); 55