summaryrefslogtreecommitdiff
path: root/lib/avb/fsl/utils.h
blob: 6fe72f58a0b53bc2b42cb4071d52ff2be49ab1e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef __UTILS_H__
#define __UTILS_H__

#include <common.h>

#define ALIGN_BYTES 64 /*mmc block read/write need 64 bytes aligned */

struct margin_pos {
	/* which blk the read/write starts */
	uint64_t blk_start;
	/* which blk the read/write ends */
	uint64_t blk_end;
	/* start position inside the start blk */
	unsigned long start;
	/* end position inside the end blk */
	unsigned long end;
	/* how many blks can be read/write one time */
	unsigned long multi;
};
typedef struct margin_pos margin_pos_t;

int get_margin_pos(uint64_t part_start, uint64_t part_end, unsigned long blksz,
				margin_pos_t *margin, int64_t offset, size_t num_bytes, bool allow_partial);

#endif