xref: /rk3399_rockchip-uboot/include/spl_ab.h (revision afc5def09548e848342a7cd50144260b13dd1a7a)
10cc16201SJason Zhu /* SPDX-License-Identifier:     GPL-2.0+ */
20cc16201SJason Zhu /*
30cc16201SJason Zhu  * (C) Copyright 2019 Rockchip Electronics Co., Ltd
40cc16201SJason Zhu  */
50cc16201SJason Zhu 
60cc16201SJason Zhu #ifndef _SPL_AB_H_
70cc16201SJason Zhu #define _SPL_AB_H_
80cc16201SJason Zhu 
9f34b44cfSXuhui Lin #include <spl.h>
100cc16201SJason Zhu #include <android_avb/libavb_ab.h>
110cc16201SJason Zhu #include <android_avb/avb_ab_flow.h>
120cc16201SJason Zhu 
130cc16201SJason Zhu #define AB_METADATA_OFFSET 4
140cc16201SJason Zhu 
150cc16201SJason Zhu /*
160cc16201SJason Zhu  * spl_get_current_slot
170cc16201SJason Zhu  *
180cc16201SJason Zhu  * @dev_desc: block description
190cc16201SJason Zhu  * @partition: partition name
200cc16201SJason Zhu  * @slot: A/B slot
210cc16201SJason Zhu  *
220cc16201SJason Zhu  * return: 0 success, others fail.
230cc16201SJason Zhu  */
240cc16201SJason Zhu int spl_get_current_slot(struct blk_desc *dev_desc, char *partition,
250cc16201SJason Zhu 			 char *slot);
260cc16201SJason Zhu 
270cc16201SJason Zhu /*
281e33e3cbSJason Zhu  * spl_ab_append_part_slot
290cc16201SJason Zhu  *
300cc16201SJason Zhu  * @dev_desc: block description
311e33e3cbSJason Zhu  * @part_name: partition name
321e33e3cbSJason Zhu  * @new_name: append the slot suffix
331e33e3cbSJason Zhu  *
341e33e3cbSJason Zhu  * return: 0 success, others fail.
350cc16201SJason Zhu  */
361e33e3cbSJason Zhu int spl_ab_append_part_slot(struct blk_desc *dev_desc,
371e33e3cbSJason Zhu 			    const char *part_name,
381e33e3cbSJason Zhu 			    char *new_name);
390cc16201SJason Zhu 
40093f4d99SJason Zhu /*
41093f4d99SJason Zhu  * spl_ab_decrease_tries
42093f4d99SJason Zhu  *
43093f4d99SJason Zhu  * @dev_desc: block description
44093f4d99SJason Zhu  *
45093f4d99SJason Zhu  * return: 0 success, others fail.
46093f4d99SJason Zhu  */
47093f4d99SJason Zhu int spl_ab_decrease_tries(struct blk_desc *dev_desc);
48093f4d99SJason Zhu 
49f34b44cfSXuhui Lin /*
50f34b44cfSXuhui Lin  * spl_ab_decrease_reset
51f34b44cfSXuhui Lin  *
52f34b44cfSXuhui Lin  * @dev_desc: block description
53f34b44cfSXuhui Lin  *
54f34b44cfSXuhui Lin  * return: 0 success, others fail.
55f34b44cfSXuhui Lin  */
56f34b44cfSXuhui Lin int spl_ab_decrease_reset(struct blk_desc *dev_desc);
57f34b44cfSXuhui Lin 
58*afc5def0SXuhui Lin /**
59*afc5def0SXuhui Lin  * Append ab slot info to bootargs
60*afc5def0SXuhui Lin  *
61*afc5def0SXuhui Lin  * @param fdt		FDT address in memory
62*afc5def0SXuhui Lin  * @param slot		slot info
63*afc5def0SXuhui Lin  * @return 0 if ok, else error
64*afc5def0SXuhui Lin  */
65*afc5def0SXuhui Lin int spl_ab_bootargs_append_slot(void *fdt, char *slot);
66*afc5def0SXuhui Lin 
670cc16201SJason Zhu  #endif
68