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_UNDEFINE, 23 }; 24 25 struct bootloader_message { 26 char command[32]; 27 char status[32]; 28 char recovery[768]; 29 /* 30 * The 'recovery' field used to be 1024 bytes. It has only ever 31 * been used to store the recovery command line, so 768 bytes 32 * should be plenty. We carve off the last 256 bytes to store the 33 * stage string (for multistage packages) and possible future 34 * expansion. 35 */ 36 char stage[32]; 37 char slot_suffix[32]; 38 char reserved[192]; 39 }; 40 41 struct rockchip_image { 42 uint32_t tag; 43 uint32_t size; 44 int8_t image[1]; 45 uint32_t crc; 46 }; 47 48 #define RK_BLK_SIZE 512 49 #define TAG_KERNEL 0x4C4E524B 50 #define BCB_MESSAGE_BLK_OFFSET (16 * 1024 >> 9) 51 52 #define PART_UBOOT "uboot" 53 #define PART_TRUST "trust" 54 #define PART_MISC "misc" 55 #define PART_RESOURCE "resource" 56 #define PART_KERNEL "kernel" 57 #define PART_BOOT "boot" 58 #define PART_VENDOR_BOOT "vendor_boot" 59 #define PART_RECOVERY "recovery" 60 #define PART_DTBO "dtbo" 61 #define PART_LOGO "logo" 62 #define PART_SYSTEM "system" 63 #define PART_METADATA "metadata" 64 #define PART_USERDATA "userdata" 65 #define PART_META "meta" 66 67 struct blk_desc *rockchip_get_bootdev(void); 68 void rockchip_set_bootdev(struct blk_desc *desc); 69 void board_run_recovery_wipe_data(void); 70 void setup_download_mode(void); 71 int get_bcb_recovery_msg(void); 72 int rockchip_read_dtb_file(void *fdt_addr); 73 int rockchip_ram_read_dtb_file(void *img, void *fdt_addr); 74 int init_kernel_dtb(void); 75 int fit_write_trusty_rollback_index(u32 trusty_index); 76 77 #ifndef CONFIG_SPL_BUILD 78 int rockchip_get_boot_mode(void); 79 #else 80 int rockchip_get_boot_mode(struct blk_desc *dev_desc, u32 bcb_sector_offset); 81 #endif 82 #endif 83