43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
/*
|
|
* Copyright (C) 2016 Freescale Semiconductor, Inc.
|
|
* Copyright 2018 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);
|
|
|
|
int read_from_partition_in_bytes(struct blk_desc *fs_dev_desc,
|
|
disk_partition_t *info,
|
|
int64_t offset, size_t num_bytes,
|
|
void* buffer, size_t* out_num_read);
|
|
|
|
int write_to_partition_in_bytes(struct blk_desc *fs_dev_desc,
|
|
disk_partition_t *info, int64_t offset,
|
|
size_t num_bytes, void* buffer,
|
|
size_t *out_num_write);
|
|
|
|
#endif
|