blob: 8100e77be4ad3e9a22ae5374140d1b84ad1c87ef [file] [log] [blame]
/*
* Copyright (C) 2016 Freescale Semiconductor, Inc.
* Copyright 2017 NXP
*
* SPDX-License-Identifier: GPL-2.0+
*/
#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