1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright (C) 2020 Eugeniu Rosca <rosca.eugeniu@gmail.com> 4 * 5 * Android Bootloader Control Block Header 6 */ 7 8#ifndef __BCB_H__ 9#define __BCB_H__ 10 11#include <part.h> 12 13enum bcb_field { 14 BCB_FIELD_COMMAND, 15 BCB_FIELD_STATUS, 16 BCB_FIELD_RECOVERY, 17 BCB_FIELD_STAGE 18}; 19 20#if IS_ENABLED(CONFIG_CMD_BCB) 21 22int bcb_find_partition_and_load(const char *iface, 23 int devnum, char *partp); 24int bcb_load(struct blk_desc *block_description, 25 struct disk_partition *disk_partition); 26int bcb_set(enum bcb_field field, const char *value); 27 28/** 29 * bcb_get() - get the field value. 30 * @field: field to get 31 * @value_out: buffer to copy bcb field value to 32 * @value_size: buffer size to avoid overflow in case 33 * value_out is smaller then the field value 34 */ 35int bcb_get(enum bcb_field field, char *value_out, size_t value_size); 36 37int bcb_store(void); 38void bcb_reset(void); 39 40#else 41 42#include <linux/errno.h> 43 44static inline int bcb_load(struct blk_desc *block_description, 45 struct disk_partition *disk_partition) 46{ 47 return -EOPNOTSUPP; 48} 49 50static inline int bcb_find_partition_and_load(const char *iface, 51 int devnum, char *partp) 52{ 53 return -EOPNOTSUPP; 54} 55 56static inline int bcb_set(enum bcb_field field, const char *value) 57{ 58 return -EOPNOTSUPP; 59} 60 61static inline int bcb_get(enum bcb_field field, char *value_out) 62{ 63 return -EOPNOTSUPP; 64} 65 66static inline int bcb_store(void) 67{ 68 return -EOPNOTSUPP; 69} 70 71static inline void bcb_reset(void) 72{ 73} 74#endif 75 76#endif /* __BCB_H__ */ 77