106621a79SKever Yang /* 206621a79SKever Yang * (C) Copyright 2017 Rockchip Electronics Co., Ltd 306621a79SKever Yang * 406621a79SKever Yang * SPDX-License-Identifier: GPL-2.0+ 506621a79SKever Yang */ 606621a79SKever Yang 706621a79SKever Yang #ifndef __BOOT_ROCKCHIP_H_ 806621a79SKever Yang #define __BOOT_ROCKCHIP_H_ 906621a79SKever Yang 1006621a79SKever Yang /* This is a copy from Android boot loader */ 1106621a79SKever Yang enum _boot_mode { 1206621a79SKever Yang BOOT_MODE_NORMAL = 0, 1306621a79SKever Yang BOOT_MODE_RECOVERY, 14b7195498SJoseph Chen BOOT_MODE_BOOTLOADER, /* Android: Fastboot mode */ 15b7195498SJoseph Chen BOOT_MODE_LOADER, /* Rockchip: Rockusb download mode */ 16b7195498SJoseph Chen BOOT_MODE_CHARGING, 17b7195498SJoseph Chen BOOT_MODE_UMS, 18b7195498SJoseph Chen BOOT_MODE_BROM_DOWNLOAD, 190bc19640SJoseph Chen BOOT_MODE_PANIC, 200bc19640SJoseph Chen BOOT_MODE_WATCHDOG, 21b7195498SJoseph Chen BOOT_MODE_UNDEFINE, 2206621a79SKever Yang }; 2306621a79SKever Yang 24e72b9125SJoseph Chen struct bootloader_message { 25e72b9125SJoseph Chen char command[32]; 26e72b9125SJoseph Chen char status[32]; 27e72b9125SJoseph Chen char recovery[768]; 28e72b9125SJoseph Chen /* 29e72b9125SJoseph Chen * The 'recovery' field used to be 1024 bytes. It has only ever 30e72b9125SJoseph Chen * been used to store the recovery command line, so 768 bytes 31e72b9125SJoseph Chen * should be plenty. We carve off the last 256 bytes to store the 32e72b9125SJoseph Chen * stage string (for multistage packages) and possible future 33e72b9125SJoseph Chen * expansion. 34e72b9125SJoseph Chen */ 35e72b9125SJoseph Chen char stage[32]; 36e72b9125SJoseph Chen char slot_suffix[32]; 37e72b9125SJoseph Chen char reserved[192]; 38e72b9125SJoseph Chen }; 39e72b9125SJoseph Chen 40e72b9125SJoseph Chen struct rockchip_image { 41e72b9125SJoseph Chen uint32_t tag; 42e72b9125SJoseph Chen uint32_t size; 43e72b9125SJoseph Chen int8_t image[1]; 44e72b9125SJoseph Chen uint32_t crc; 45e72b9125SJoseph Chen }; 46e72b9125SJoseph Chen 47e72b9125SJoseph Chen #define RK_BLK_SIZE 512 48e72b9125SJoseph Chen #define TAG_KERNEL 0x4C4E524B 49e72b9125SJoseph Chen #define BCB_MESSAGE_BLK_OFFSET (16 * 1024 >> 9) 50e72b9125SJoseph Chen 5106621a79SKever Yang #define PART_MISC "misc" 52*5ae165daSJoseph Chen #define PART_RESOURCE "resource" 5306621a79SKever Yang #define PART_KERNEL "kernel" 5406621a79SKever Yang #define PART_BOOT "boot" 5506621a79SKever Yang #define PART_RECOVERY "recovery" 56f8dbe861SJoseph Chen #define PART_DTBO "dtbo" 571d30bcc5SJoseph Chen #define PART_LOGO "logo" 5806621a79SKever Yang 5906621a79SKever Yang struct blk_desc *rockchip_get_bootdev(void); 600ed06f16SJoseph Chen void rockchip_set_bootdev(struct blk_desc *desc); 61f61a997eSqiujian void board_run_recovery_wipe_data(void); 62d04ada6cSJoseph Chen void setup_download_mode(void); 63d04ada6cSJoseph Chen int rockchip_get_boot_mode(void); 64f61a997eSqiujian 6506621a79SKever Yang #endif 66