/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates

This software file (the "File") is owned and distributed by Marvell 
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms.  Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.

********************************************************************************
Marvell Commercial License Option

If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.

********************************************************************************
Marvell GPL License Option

If you received this File from Marvell, you may opt to use, redistribute and/or 
modify this File in accordance with the terms and conditions of the General 
Public License Version 2, June 1991 (the "GPL License"), a copy of which is 
available along with the File in the license.txt file or by writing to the Free 
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or 
on the worldwide web at http://www.gnu.org/licenses/gpl.txt. 

THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED 
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY 
DISCLAIMED.  The GPL License provides additional details about this warranty 
disclaimer.
********************************************************************************
Marvell BSD License Option

If you received this File from Marvell, you may opt to use, redistribute and/or 
modify this File under the following licensing terms. 
Redistribution and use in source and binary forms, with or without modification, 
are permitted provided that the following conditions are met:

    *   Redistributions of source code must retain the above copyright notice,
	    this list of conditions and the following disclaimer. 

    *   Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution. 

    *   Neither the name of Marvell nor the names of its contributors may be 
        used to endorse or promote products derived from this software without 
        specific prior written permission. 
    
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*******************************************************************************/

#ifndef __INCmvMFlashSpecH
#define __INCmvMFlashSpecH

/* Information and Main region sizes per sunol model */
#define		MV_MFLASH_INF_MEM_SZ_SUNOL_1	    0x400		/* 1Kbyte */
#define		MV_MFLASH_INF_MEM_SZ_SUNOL_2_3		0x800		/* 2Kbyte */
#define		MV_MFLASH_MAIN_MEM_SZ_SUNOL_1		0x30000	    /* 192 Kbyte */
#define		MV_MFLASH_MAIN_MEM_SZ_SUNOL_2		0x40000	    /* 256 KByte */
#define		MV_MFLASH_MAIN_MEM_SZ_SUNOL_3		0x60000	    /* 384 KByte */

/* maunfacturer and Device IDs */
#define     MV_MFLASH_MANUFACTURER_ID           0x7F7F7FE9  /* Marvell Semiconductors Manufacturer ID */
#define     MV_MFLASH_DEVICE_ID_SUNOL_1         0x0290      /* LS nibble is the revision */
#define     MV_MFLASH_DEVICE_ID_SUNOL_2         0x02A0      /* LS nibble is the revision */
#define     MV_MFLASH_DEVICE_ID_SUNOL_3         0x02D0      /* LS nibble is the revision */
#define     MV_MFLASH_DEVICE_ID_MASK            0xFFF0      /* mask for the device ID */
#define     MV_MFLASH_DEVICE_ID_REV_MASK        0x000F      /* revision part of the device ID */

/* SUNOL sector Sizes */
#define     MV_MFLASH_SECTOR_SIZE_SMALL         0x1000		/* 4KByte */
#define     MV_MFLASH_SECTOR_SIZE_BIG	        0x8000		/* 32KByte */

/* SUNOL sectors number */
#define     MV_MFLASH_SMALL_SEC_NUM_SUNOL_1     (MV_MFLASH_MAIN_MEM_SZ_SUNOL_1 / MV_MFLASH_SECTOR_SIZE_SMALL) /* 48 */
#define     MV_MFLASH_SMALL_SEC_NUM_SUNOL_2     (MV_MFLASH_MAIN_MEM_SZ_SUNOL_2 / MV_MFLASH_SECTOR_SIZE_SMALL) /* 64 */
#define     MV_MFLASH_SMALL_SEC_NUM_SUNOL_3     (MV_MFLASH_MAIN_MEM_SZ_SUNOL_3 / MV_MFLASH_SECTOR_SIZE_SMALL) /* 96 */
#define     MV_MFLASH_BIG_SEC_NUM_SUNOL_1       (MV_MFLASH_MAIN_MEM_SZ_SUNOL_1 / MV_MFLASH_SECTOR_SIZE_BIG) /* 6 */
#define     MV_MFLASH_BIG_SEC_NUM_SUNOL_2       (MV_MFLASH_MAIN_MEM_SZ_SUNOL_2 / MV_MFLASH_SECTOR_SIZE_BIG) /* 8 */
#define     MV_MFLASH_BIG_SEC_NUM_SUNOL_3       (MV_MFLASH_MAIN_MEM_SZ_SUNOL_3 / MV_MFLASH_SECTOR_SIZE_BIG) /* 12 */

/* Loops Timeouts */
#define		MV_MFLASH_MAX_CMD_DONE_LOOP	        1000000 /* max poll times to wait for the comamnd done */
#define		MV_MFLASH_MAX_PRG_LOOP				1000000 /* max poll times to wait for programming to be completed */

/* Page allignment and Mask */
#define		MV_MFLASH_PROG_ALIGN_MASK			0x3f	/* PROG should be alligned to 64 bytes */
#define		MV_MFLASH_PROG_CHUNK_SIZE			(MV_MFLASH_PROG_ALIGN_MASK + 1)

#endif /* __INCmvMFlashSpecH */
