/*******************************************************************************
*                Copyright 2016, MARVELL SEMICONDUCTOR, LTD.                   *
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL.                      *
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT  *
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE        *
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.     *
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED,       *
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.   *
*                                                                              *
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES, *
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL    *
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K.  *
* (MJKK), MARVELL ISRAEL LTD. (MSIL).                                          *
*******************************************************************************/
#ifndef _FLASH_OP_H_
#define _FLASH_OP_H_

#define FLASH_SWITCH_PART_NOEXIST	(-1)
#define FLASH_OP_ERR	 	(-2)

void set_flash_parameters(int blocksize, int pagesize, int addrcycle);
inline int get_block_size();
int get_page_size();
int get_addr_cycle();
int get_boot_partition_number(void);
void init_flash();
int switch_flash_part(unsigned int part);
unsigned int flash_dev_id_inc(unsigned int dev_id);
long long read_flash(long long start, unsigned int size, unsigned char *buff);
long long read_flash_from_part(unsigned int part, long long start, unsigned int size, unsigned char *buff);
long long get_flash_capacity(void);
long long write_flash(long long start, unsigned int size, unsigned char *buff);
#endif
