xref: /rk3399_rockchip-uboot/cmd/bootrkp.c (revision 91c73fb4d1535d65289ad40582d4ae8ca3067b44)
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