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> 9a0e58cf2SKever Yang #include <boot_rkimg.h> 10a0e58cf2SKever Yang 11a0e58cf2SKever Yang static int do_boot_rockchip(cmd_tbl_t *cmdtp, int flag, int argc, 12a0e58cf2SKever Yang char * const argv[]) 13a0e58cf2SKever Yang { 14a0e58cf2SKever Yang disk_partition_t part_info; 15a0e58cf2SKever Yang struct blk_desc *dev_desc; 16a0e58cf2SKever Yang int mode = 0; 17a0e58cf2SKever Yang char *boot_partname = PART_BOOT; 18a0e58cf2SKever Yang int ret = 0; 19a0e58cf2SKever Yang 20a0e58cf2SKever Yang dev_desc = rockchip_get_bootdev(); 21a0e58cf2SKever Yang mode = rockchip_get_boot_mode(); 22*7ad0afacSKever Yang if (mode == BOOT_MODE_RECOVERY) { 23a0e58cf2SKever Yang boot_partname = PART_RECOVERY; 24*7ad0afacSKever Yang printf("%s boot from Recovery partition!\n", __func__); 25*7ad0afacSKever Yang } 26a0e58cf2SKever Yang ret = part_get_info_by_name(dev_desc, boot_partname, &part_info); 27a0e58cf2SKever Yang 28a0e58cf2SKever Yang if(boot_rockchip_image(dev_desc, &part_info)) 29a0e58cf2SKever Yang ret = CMD_RET_FAILURE; 30a0e58cf2SKever Yang 31a0e58cf2SKever Yang return ret; 32a0e58cf2SKever Yang } 33a0e58cf2SKever Yang 34a0e58cf2SKever Yang U_BOOT_CMD( 3532af749aSKever Yang bootrkp, CONFIG_SYS_MAXARGS, 1, do_boot_rockchip, 3632af749aSKever Yang "Boot Linux Image from rockchip image type", 3732af749aSKever Yang "kernel.img: zImage/Image\n" 3832af749aSKever Yang "boot.img: ramdisk\n" 3932af749aSKever Yang "resource.img: dtb, u-boot logo, kernel logo" 40a0e58cf2SKever Yang ); 41