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