1 /* 2 * (C) Copyright 2017 Rockchip Electronics Co., Ltd 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #ifndef __BOOT_ROCKCHIP_H_ 8 #define __BOOT_ROCKCHIP_H_ 9 10 /* This is a copy from Android boot loader */ 11 enum _boot_mode { 12 BOOT_MODE_NORMAL = 0, 13 BOOT_MODE_RECOVERY, 14 BOOT_MODE_BOOTLOADER, /* Android: Fastboot mode */ 15 BOOT_MODE_LOADER, /* Rockchip: Rockusb download mode */ 16 BOOT_MODE_CHARGING, 17 BOOT_MODE_UMS, 18 BOOT_MODE_BROM_DOWNLOAD, 19 BOOT_MODE_PANIC, 20 BOOT_MODE_WATCHDOG, 21 BOOT_MODE_DFU, 22 BOOT_MODE_QUIESCENT, 23 BOOT_MODE_UNDEFINE, 24 }; 25 26 struct bootloader_message { 27 char command[32]; 28 char status[32]; 29 char recovery[768]; 30 /* 31 * The 'recovery' field used to be 1024 bytes. It has only ever 32 * been used to store the recovery command line, so 768 bytes 33 * should be plenty. We carve off the last 256 bytes to store the 34 * stage string (for multistage packages) and possible future 35 * expansion. 36 */ 37 char stage[32]; 38 char slot_suffix[32]; 39 char reserved[192]; 40 }; 41 42 struct rockchip_image { 43 uint32_t tag; 44 uint32_t size; 45 int8_t image[1]; 46 uint32_t crc; 47 }; 48 49 #define RK_BLK_SIZE 512 50 #define TAG_KERNEL 0x4C4E524B 51 #define BCB_MESSAGE_BLK_OFFSET (16 * 1024 >> 9) 52 53 #define PART_UBOOT "uboot" 54 #define PART_TRUST "trust" 55 #define PART_MISC "misc" 56 #define PART_RESOURCE "resource" 57 #define PART_KERNEL "kernel" 58 #define PART_BOOT "boot" 59 #define PART_VENDOR_BOOT "vendor_boot" 60 #define PART_RECOVERY "recovery" 61 #define PART_DTBO "dtbo" 62 #define PART_LOGO "logo" 63 #define PART_SYSTEM "system" 64 #define PART_METADATA "metadata" 65 #define PART_USERDATA "userdata" 66 #define PART_META "meta" 67 68 struct blk_desc *rockchip_get_bootdev(void); 69 void rockchip_set_bootdev(struct blk_desc *desc); 70 void board_run_recovery_wipe_data(void); 71 void setup_download_mode(void); 72 int get_bcb_recovery_msg(void); 73 int rockchip_read_dtb_file(void *fdt_addr); 74 int rockchip_ram_read_dtb_file(void *img, void *fdt_addr); 75 int init_kernel_dtb(void); 76 int fit_write_trusty_rollback_index(u32 trusty_index); 77 int arch_fpga_init(void); 78 79 #ifndef CONFIG_SPL_BUILD 80 int rockchip_get_boot_mode(void); 81 #else 82 int rockchip_get_boot_mode(struct blk_desc *dev_desc, u32 bcb_sector_offset); 83 #endif 84 #endif 85