| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright (C) 2015-2016 Freescale Semiconductor, Inc. |
| */ |
| |
| #ifndef BCB_H |
| #define BCB_H |
| #include <linux/types.h> |
| #include <linux/stat.h> |
| |
| #define FASTBOOT_BCB_CMD "bootonce-bootloader" |
| #ifdef CONFIG_ANDROID_RECOVERY |
| #define RECOVERY_BCB_CMD "boot-recovery" |
| #endif |
| /* keep same as bootable/recovery/bootloader.h */ |
| struct bootloader_message { |
| char command[32]; |
| char status[32]; |
| char recovery[768]; |
| |
| /* The 'recovery' field used to be 1024 bytes. It has only ever |
| been used to store the recovery command line, so 768 bytes |
| should be plenty. We carve off the last 256 bytes to store the |
| stage string (for multistage packages) and possible future |
| expansion. */ |
| char stage[32]; |
| |
| /* The 'reserved' field used to be 224 bytes when it was initially |
| carved off from the 1024-byte recovery field. Bump it up to |
| 1184-byte so that the entire bootloader_message struct rounds up |
| to 2048-byte. |
| */ |
| char reserved[1184]; |
| }; |
| |
| struct bootloader_message_ab { |
| struct bootloader_message message; |
| char slot_suffix[32]; |
| |
| /* Round up the entire struct to 4096-byte. */ |
| char reserved[2016]; |
| }; |
| |
| /* start from bootloader_message_ab.slot_suffix[BOOTCTRL_IDX] */ |
| #define BOOTCTRL_IDX 0 |
| #define MISC_COMMAND_IDX 0 |
| #define BOOTCTRL_OFFSET \ |
| (u32)(&(((struct bootloader_message_ab *)0)->slot_suffix[BOOTCTRL_IDX])) |
| #define MISC_COMMAND \ |
| (u32)(uintptr_t)(&(((struct bootloader_message *)0)->command[MISC_COMMAND_IDX])) |
| int bcb_rw_block(bool bread, char **ppblock, |
| uint *pblksize, char *pblock_write, uint offset, uint size); |
| |
| int bcb_write_command(char *bcb_command); |
| int bcb_read_command(char *command); |
| |
| #endif |