32 lines
		
	
	
		
			802 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			802 B
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * 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
 |