Blame view
include/fsl_fastboot.h
8.3 KB
2c840c82b MLK-18591-3 andro... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/* * Copyright (C) 2010-2016 Freescale Semiconductor, Inc. * Copyright 2017 NXP * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef FSL_FASTBOOT_H #define FSL_FASTBOOT_H #include <stdbool.h> #include <linux/types.h> #define FASTBOOT_PTENTRY_FLAGS_REPEAT(n) (n & 0x0f) #define FASTBOOT_PTENTRY_FLAGS_REPEAT_MASK 0x0000000F /* Writes happen a block at a time. If the write fails, go to next block NEXT_GOOD_BLOCK and CONTIGOUS_BLOCK can not both be set */ #define FASTBOOT_PTENTRY_FLAGS_WRITE_NEXT_GOOD_BLOCK 0x00000010 /* Find a contiguous block big enough for a the whole file NEXT_GOOD_BLOCK and CONTIGOUS_BLOCK can not both be set */ #define FASTBOOT_PTENTRY_FLAGS_WRITE_CONTIGUOUS_BLOCK 0x00000020 /* Write the file with write.i */ #define FASTBOOT_PTENTRY_FLAGS_WRITE_I 0x00000100 /* Write the file with write.trimffs */ #define FASTBOOT_PTENTRY_FLAGS_WRITE_TRIMFFS 0x00000200 /* Write the file as a series of variable/value pairs using the setenv and saveenv commands */ #define FASTBOOT_PTENTRY_FLAGS_WRITE_ENV 0x00000400 /* Uneraseable partition */ #define FASTBOOT_PTENTRY_FLAGS_UNERASEABLE 0x00000800 #define FASTBOOT_MMC_BOOT_PARTITION_ID 1 #define FASTBOOT_MMC_USER_PARTITION_ID 0 #define FASTBOOT_MMC_NONE_PARTITION_ID -1 |
1ae9ecc73 MLK-18591-6 andro... |
41 |
#define FASTBOOT_MMC_BOOT1_PARTITION_ID 2 |
2c840c82b MLK-18591-3 andro... |
42 |
|
1ae9ecc73 MLK-18591-6 andro... |
43 |
#define FASTBOOT_PARTITION_TEE "tos" |
2c840c82b MLK-18591-3 andro... |
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#define FASTBOOT_PARTITION_PRDATA "presistdata" #ifdef CONFIG_AVB_SUPPORT #define FASTBOOT_PARTITION_AVBKEY "avbkey" #endif #ifdef CONFIG_FLASH_MCUFIRMWARE_SUPPORT #define FASTBOOT_MCU_FIRMWARE_PARTITION "m4_os" #endif #ifdef CONFIG_ANDROID_AB_SUPPORT #define FASTBOOT_PARTITION_BOOT_A "boot_a" #define FASTBOOT_PARTITION_RECOVERY "recovery" #define FASTBOOT_PARTITION_SYSTEM_A "system_a" #define FASTBOOT_PARTITION_BOOTLOADER "bootloader0" #define FASTBOOT_PARTITION_DATA "userdata" #define FASTBOOT_PARTITION_BOOT_B "boot_b" #define FASTBOOT_PARTITION_SYSTEM_B "system_b" |
b45ecdb05 [iot] Correct oem... |
62 63 64 65 |
#define FASTBOOT_PARTITION_OEM_A "oem_a" #define FASTBOOT_PARTITION_VENDOR_A "vendor_a" #define FASTBOOT_PARTITION_OEM_B "oem_b" #define FASTBOOT_PARTITION_VENDOR_B "vendor_b" |
2c840c82b MLK-18591-3 andro... |
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#ifdef CONFIG_AVB_SUPPORT #define FASTBOOT_PARTITION_VBMETA_A "vbmeta_a" #define FASTBOOT_PARTITION_VBMETA_B "vbmeta_b" #endif #define FASTBOOT_PARTITION_MISC "misc" #define FASTBOOT_PARTITION_GPT "gpt" #define FASTBOOT_PARTITION_FBMISC "fbmisc" #else #define FASTBOOT_PARTITION_BOOT "boot" #define FASTBOOT_PARTITION_RECOVERY "recovery" #define FASTBOOT_PARTITION_SYSTEM "system" #define FASTBOOT_PARTITION_CACHE "cache" #define FASTBOOT_PARTITION_DEVICE "device" #define FASTBOOT_PARTITION_BOOTLOADER "bootloader" #define FASTBOOT_PARTITION_DATA "userdata" #define FASTBOOT_PARTITION_GPT "gpt" #define FASTBOOT_PARTITION_MISC "misc" #define FASTBOOT_PARTITION_FBMISC "fbmisc" #endif |
0e8b4af40 MA-13629 [Trusty]... |
85 |
#ifdef CONFIG_IMX_TRUSTY_OS |
bcb82557f MA-13759-1 imx8mm... |
86 |
#ifndef CONFIG_AVB_ATX |
557981f3a MA-13048 [AUTO] S... |
87 |
#define FASTBOOT_SET_RPMB_KEY "set-rpmb-key" |
0e8b4af40 MA-13629 [Trusty]... |
88 89 |
#define FASTBOOT_SET_VBMETA_PUBLIC_KEY "set-public-key" #endif |
557981f3a MA-13048 [AUTO] S... |
90 |
|
979995530 [iot] Support ata... |
91 92 |
#define FASTBOOT_SET_CA_RESP "at-set-ca-response" #define FASTBOOT_GET_CA_REQ "at-get-ca-request" |
bcb82557f MA-13759-1 imx8mm... |
93 |
#endif |
557981f3a MA-13048 [AUTO] S... |
94 |
|
502522c08 [iot] Support ARM... |
95 96 |
#ifdef CONFIG_ANDROID_THINGS_SUPPORT #define FASTBOOT_BOOTLOADER_VBOOT_KEY "fuse at-bootloader-vboot-key" |
fd9eec336 [iot] Support fas... |
97 98 |
#ifdef CONFIG_AVB_ATX #define FASTBOOT_AVB_AT_PERM_ATTR "fuse at-perm-attr" |
d4a0dbd9a [iot] Support aut... |
99 |
#define FASTBOOT_AT_UNLOCK_VBOOT "at-unlock-vboot" |
c14e9d4e2 [iot] Support loc... |
100 |
#define FASTBOOT_AT_LOCK_VBOOT "at-lock-vboot" |
aebefa804 [iot] Support com... |
101 |
#define FASTBOOT_AT_DISABLE_UNLOCK_VBOOT "at-disable-unlock-vboot" |
d4a0dbd9a [iot] Support aut... |
102 |
#define FASTBOOT_AT_GET_UNLOCK_CHALLENGE "at-get-vboot-unlock-challenge" |
fd9eec336 [iot] Support fas... |
103 104 |
#endif /* CONFIG_AVB_ATX */ #endif /* CONFIG_ANDROID_THINGS_SUPPORT */ |
2c840c82b MLK-18591-3 andro... |
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
enum { DEV_SATA, DEV_MMC, DEV_NAND, #ifdef CONFIG_FLASH_MCUFIRMWARE_SUPPORT /* SPI Flash */ DEV_SF #endif }; typedef enum { #ifdef CONFIG_ANDROID_RECOVERY /* Revoery boot due to combo keys pressed */ BOOTMODE_RECOVERY_KEY_PRESSED, /* Recovery boot due to boot-recovery cmd in misc parition */ BOOTMODE_RECOVERY_BCB_CMD, #endif /* Fastboot boot due to bootonce-bootloader cmd in misc parition */ BOOTMODE_FASTBOOT_BCB_CMD, /* Normal boot */ BOOTMODE_NORMAL }FbBootMode; struct cmd_fastboot_interface { /* This function is called when a buffer has been recieved from the client app. The buffer is a supplied by the board layer and must be unmodified. The buffer_size is how much data is passed in. Returns 0 on success Returns 1 on failure Set by cmd_fastboot */ int (*rx_handler)(const unsigned char *buffer, unsigned int buffer_size); /* This function is called when an exception has occurred in the device code and the state off fastboot needs to be reset Set by cmd_fastboot */ void (*reset_handler)(void); /* A getvar string for the product name It can have a maximum of 60 characters Set by board */ char *product_name; /* A getvar string for the serial number It can have a maximum of 60 characters Set by board */ char *serial_no; /* Nand block size Supports the write option WRITE_NEXT_GOOD_BLOCK Set by board */ unsigned int nand_block_size; /* Nand oob size Set by board */ unsigned int nand_oob_size; /* Transfer buffer, for handling flash updates Should be multiple of the nand_block_size Care should be take so it does not overrun bootloader memory Controlled by the configure variable CFG_FASTBOOT_TRANSFER_BUFFER Set by board */ unsigned char *transfer_buffer; /* How big is the transfer buffer Controlled by the configure variable CFG_FASTBOOT_TRANSFER_BUFFER_SIZE Set by board */ unsigned int transfer_buffer_size; }; /* flash partitions are defined in terms of blocks ** (flash erase units) */ struct fastboot_ptentry { /* The logical name for this partition, null terminated */ |
620747bfe MA-12120 [Android... |
193 |
char name[20]; |
2c840c82b MLK-18591-3 andro... |
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
/* The start wrt the nand part, must be multiple of nand block size */ unsigned int start; /* The length of the partition, must be multiple of nand block size */ unsigned int length; /* Controls the details of how operations are done on the partition See the FASTBOOT_PTENTRY_FLAGS_*'s defined below */ unsigned int flags; /* partition id: 0 - normal partition; 1 - boot partition */ unsigned int partition_id; /* partition number in block device */ unsigned int partition_index; /* partition file system type in string */ char fstype[16]; /* filesystem UUID as string, if exists */ #ifdef CONFIG_PARTITION_UUIDS char uuid[37]; #endif }; struct fastboot_device_info { unsigned char type; unsigned char dev_id; }; extern struct fastboot_device_info fastboot_devinfo; /* Prepare the fastboot environments, * should be executed before "fastboot" cmd */ void fastboot_setup(void); /* The Android-style flash handling */ /* tools to populate and query the partition table */ void fastboot_flash_add_ptn(struct fastboot_ptentry *ptn); struct fastboot_ptentry *fastboot_flash_find_ptn(const char *name); struct fastboot_ptentry *fastboot_flash_get_ptn(unsigned n); unsigned int fastboot_flash_get_ptn_count(void); void fastboot_flash_dump_ptn(void); /* Make board into special boot mode */ void fastboot_run_bootmode(void); /*Setup board-relative fastboot environment */ void board_fastboot_setup(void); /*return partition index according name*/ int fastboot_flash_find_index(const char *name); /*check whether bootloader is overlay with GPT table*/ bool bootloader_gpt_overlay(void); /* Check whether the combo keys pressed * Return 1 if combo keys pressed for recovery boot * Return 0 if no combo keys pressed */ int is_recovery_key_pressing(void); #ifdef CONFIG_FASTBOOT_STORAGE_NAND /*Save parameters for NAND storage partitions */ void save_parts_values(struct fastboot_ptentry *ptn, unsigned int offset, unsigned int size); /* Checks parameters for NAND storage partitions * Return 1 if the parameter is not set * Return 0 if the parameter has been set */ int check_parts_values(struct fastboot_ptentry *ptn); #endif /*CONFIG_FASTBOOT_STORAGE_NAND*/ /* Reads |num_bytes| from offset |offset| from partition with name * |partition| (NUL-terminated UTF-8 string). If |offset| is * negative, its absolute value should be interpreted as the number * of bytes from the end of the partition. * It's basically copied from fsl_read_from_partition_multi() because * we may want to read partition when AVB is not enabled. */ int read_from_partition_multi(const char* partition, int64_t offset, size_t num_bytes,void* buffer, size_t* out_num_read); #endif /* FSL_FASTBOOT_H */ |