mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	Currently BCB C API only allows to modify 'command' BCB field. Extend it so that we can also read and modify all the available BCB fields (command, status, recovery, stage). Co-developed-by: Cody Schuffelen <schuffelen@google.com> Signed-off-by: Cody Schuffelen <schuffelen@google.com> Signed-off-by: Dmitrii Merkurev <dimorinny@google.com> Cc: Eugeniu Rosca <erosca@de.adit-jv.com> Cc: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org> Cc: Simon Glass <sjg@chromium.org> Cc: Mattijs Korpershoek <mkorpershoek@baylibre.com> Cc: Sean Anderson <sean.anderson@seco.com> Cc: Cody Schuffelen <schuffelen@google.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # on vim3 Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0+
 | |
| /*
 | |
|  * Copyright (C) 2020 Eugeniu Rosca <rosca.eugeniu@gmail.com>
 | |
|  *
 | |
|  * Android Bootloader Control Block Header
 | |
|  */
 | |
| 
 | |
| #ifndef __BCB_H__
 | |
| #define __BCB_H__
 | |
| 
 | |
| #include <part.h>
 | |
| 
 | |
| enum bcb_field {
 | |
| 	BCB_FIELD_COMMAND,
 | |
| 	BCB_FIELD_STATUS,
 | |
| 	BCB_FIELD_RECOVERY,
 | |
| 	BCB_FIELD_STAGE
 | |
| };
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_CMD_BCB)
 | |
| 
 | |
| int bcb_find_partition_and_load(const char *iface,
 | |
| 				int devnum, char *partp);
 | |
| int bcb_load(struct blk_desc *block_description,
 | |
| 	     struct disk_partition *disk_partition);
 | |
| int bcb_set(enum bcb_field field, const char *value);
 | |
| 
 | |
| /**
 | |
|  * bcb_get() - get the field value.
 | |
|  * @field: field to get
 | |
|  * @value_out: buffer to copy bcb field value to
 | |
|  * @value_size: buffer size to avoid overflow in case
 | |
|  *              value_out is smaller then the field value
 | |
|  */
 | |
| int bcb_get(enum bcb_field field, char *value_out, size_t value_size);
 | |
| 
 | |
| int bcb_store(void);
 | |
| void bcb_reset(void);
 | |
| 
 | |
| #else
 | |
| 
 | |
| #include <linux/errno.h>
 | |
| 
 | |
| static inline int bcb_load(struct blk_desc *block_description,
 | |
| 			   struct disk_partition *disk_partition)
 | |
| {
 | |
| 	return -EOPNOTSUPP;
 | |
| }
 | |
| 
 | |
| static inline int bcb_find_partition_and_load(const char *iface,
 | |
| 					      int devnum, char *partp)
 | |
| {
 | |
| 	return -EOPNOTSUPP;
 | |
| }
 | |
| 
 | |
| static inline int bcb_set(enum bcb_field field, const char *value)
 | |
| {
 | |
| 	return -EOPNOTSUPP;
 | |
| }
 | |
| 
 | |
| static inline int bcb_get(enum bcb_field field, char *value_out)
 | |
| {
 | |
| 	return -EOPNOTSUPP;
 | |
| }
 | |
| 
 | |
| static inline int bcb_store(void)
 | |
| {
 | |
| 	return -EOPNOTSUPP;
 | |
| }
 | |
| 
 | |
| static inline void bcb_reset(void)
 | |
| {
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* __BCB_H__ */
 |