blob: a56b547595a6da7b76b25a8e592fad216ca38119 [file] [log] [blame]
Eugeniu Rosca54a55482020-10-23 11:52:22 +03001// 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
Dmitrii Merkurevacb22812023-11-10 05:59:55 +000011#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
Simon Glass4c7e47a2023-02-05 15:36:21 -070020#if IS_ENABLED(CONFIG_CMD_BCB)
Dmitrii Merkurevacb22812023-11-10 05:59:55 +000021
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
Eugeniu Rosca54a55482020-10-23 11:52:22 +030040#else
Dmitrii Merkurevacb22812023-11-10 05:59:55 +000041
Eugeniu Rosca54a55482020-10-23 11:52:22 +030042#include <linux/errno.h>
Dmitrii Merkurevacb22812023-11-10 05:59:55 +000043
44static inline int bcb_load(struct blk_desc *block_description,
45 struct disk_partition *disk_partition)
Eugeniu Rosca54a55482020-10-23 11:52:22 +030046{
47 return -EOPNOTSUPP;
48}
Dmitrii Merkurevacb22812023-11-10 05:59:55 +000049
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
Mattijs Korpershoekfe92d5f2024-06-03 11:04:58 +020061static inline int bcb_get(enum bcb_field field,
62 char *value_out, size_t value_size)
Dmitrii Merkurevacb22812023-11-10 05:59:55 +000063{
64 return -EOPNOTSUPP;
65}
66
67static inline int bcb_store(void)
68{
69 return -EOPNOTSUPP;
70}
71
72static inline void bcb_reset(void)
73{
74}
Eugeniu Rosca54a55482020-10-23 11:52:22 +030075#endif
76
77#endif /* __BCB_H__ */