| /******************************************************************************* |
| 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 __INCmvIntelFlashH |
| #define __INCmvIntelFlashH |
| |
| #include "mvFlashCom.h" |
| |
| |
| /* Mt Flash IDs */ |
| #define MT_FID_28F400_T 0x4470 /* 28F400B3 ID ( 4 M, top boot sector) */ |
| #define MT_FID_28F400_B 0x4471 /* 28F400B3 ID ( 4 M, bottom boot sect) */ |
| |
| |
| /* Intel Flash IDs */ |
| #define INTEL_FID_28F016S 0x66a0 /* 28F016S[VS] ID (16M = 512k x 16) */ |
| #define INTEL_FID_28F800B3T 0x8892 /* 8M = 512K x 16 top boot sector */ |
| #define INTEL_FID_28F800B3B 0x8893 /* 8M = 512K x 16 bottom boot sector */ |
| #define INTEL_FID_28F160B3T 0x8890 /* 16M = 1M x 16 top boot sector */ |
| #define INTEL_FID_28F160B3B 0x8891 /* 16M = 1M x 16 bottom boot sector */ |
| #define INTEL_FID_28F320B3T 0x8896 /* 32M = 2M x 16 top boot sector */ |
| #define INTEL_FID_28F320B3B 0x8897 /* 32M = 2M x 16 bottom boot sector */ |
| #define INTEL_FID_28F640B3T 0x8898 /* 64M = 4M x 16 top boot sector */ |
| #define INTEL_FID_28F640B3B 0x8899 /* 64M = 4M x 16 bottom boot sector */ |
| #define INTEL_FID_28F160F3B 0x88F4 /* 16M = 1M x 16 bottom boot sector */ |
| |
| #define INTEL_FID_28F800C3T 0x88C0 /* 8M = 512K x 16 top boot sector */ |
| #define INTEL_FID_28F800C3B 0x88C1 /* 8M = 512K x 16 bottom boot sector */ |
| #define INTEL_FID_28F160C3T 0x88C2 /* 16M = 1M x 16 top boot sector */ |
| #define INTEL_FID_28F160C3B 0x88C3 /* 16M = 1M x 16 bottom boot sector */ |
| #define INTEL_FID_28F320C3T 0x88C4 /* 32M = 2M x 16 top boot sector */ |
| #define INTEL_FID_28F320C3B 0x88C5 /* 32M = 2M x 16 bottom boot sector */ |
| #define INTEL_FID_28F640C3T 0x88CC /* 64M = 4M x 16 top boot sector */ |
| #define INTEL_FID_28F640C3B 0x88CD /* 64M = 4M x 16 bottom boot sector */ |
| |
| #define INTEL_FID_28F128J3 0x8918 /* 16M = 8M x 16 x 128 */ |
| #define INTEL_FID_28F320J5 0x0014 /* 32M = 128K x 32 */ |
| #define INTEL_FID_28F640J5 0x0015 /* 64M = 128K x 64 */ |
| #define INTEL_FID_28F320J3A 0x0016 /* 32M = 128K x 32 */ |
| #define INTEL_FID_28F640J3A 0x0017 /* 64M = 128K x 64 */ |
| #define INTEL_FID_28F128J3A 0x0018 /* 128M = 128K x 128 */ |
| #define INTEL_FID_28F256L18T 0x880D /* 256M = 128K x 255 + 32k x 4 */ |
| |
| #define INTEL_FID_28F160S3 0x00D0 /* 16M = 512K x 32 (64kB x 32) */ |
| #define INTEL_FID_28F320S3 0x00D4 /* 32M = 512K x 64 (64kB x 64) */ |
| #define INTEL_FID_28F128P30T 0x8818 /* 16M = 128K x 127 (32kB x 4) top boot sector */ |
| #define INTEL_FID_28F128P30B 0x881B /* 16M = 128K x 127 (32kB x 4) bottom boot sector */ |
| #define INTEL_FID_28F256P30T 0x8919 /* 32M = 128K x 255 (32kB x 4) top boot sector */ |
| #if defined(DB_88F1281) |
| #define INTEL_FID_28F256P30B 0x1C /* 16M = 64K x 255 (16kB x 4) bottom boot sector */ |
| #else |
| #define INTEL_FID_28F256P30B 0x891C /* 32M = 128K x 255 (32kB x 4) bottom boot sector */ |
| #endif |
| |
| |
| /* Intel Flash APIs timeouts*/ |
| #define INTEL_EARASE_MILI_TIMEOUT (8000*10) /* mili Sec */ |
| #define INTEL_PROG_TIMEOUT (0xA0000*10) /* number of loops */ |
| #define INTEL_LOCK_MILI_TIMEOUT (8000*10) /* mili Sec */ |
| |
| /* Commands */ |
| #define INTEL_CHIP_CMD_RST 0xFF /* reset flash */ |
| #define INTEL_CHIP_CMD_RD_ID 0x90 /* read the id and lock bits */ |
| #define INTEL_CHIP_CMD_RD_QUERY 0x98 /* read device capabilities */ |
| #define INTEL_CHIP_CMD_RD_STAT 0x70 /* read the status register */ |
| #define INTEL_CHIP_CMD_CLR_STAT 0x50 /* clear the staus register */ |
| #define INTEL_CHIP_CMD_WR_BUF 0xE8 /* write buffer command */ |
| #define INTEL_CHIP_CMD_CONFIRM_BUF 0xD0 /* write buffer command */ |
| #define INTEL_CHIP_CMD_PROG 0x40 /* program word command */ |
| #define INTEL_CHIP_CMD_ERASE1 0x20 /* 1st word for block erase */ |
| #define INTEL_CHIP_CMD_ERASE2 0xD0 /* 2nd word for block erase */ |
| #define INTEL_CHIP_CMD_ERASE_SUSP 0xB0 /* suspend block erase */ |
| #define INTEL_CHIP_CMD_LOCK 0x60 /* 1st word for all lock cmds */ |
| #define INTEL_CHIP_CMD_SET_LOCK_BLK 0x01 /* 2nd wrd set block lock bit */ |
| #define INTEL_CHIP_CMD_SET_LOCK_MSTR 0xF1 /* 2nd wrd set master lck bit */ |
| #define INTEL_CHIP_CMD_CLR_LOCK_BLK 0xD0 /* 2nd wrd clear blk lck bit */ |
| |
| |
| |
| /* status register bits */ |
| #define INTEL_CHIP_STAT_DPS 0x02 /* Device Protect Status */ |
| #define INTEL_CHIP_STAT_VPPS 0x08 /* VPP Status */ |
| #define INTEL_CHIP_STAT_PSLBS 0x10 /* Program+Set Lock Bit Stat */ |
| #define INTEL_CHIP_STAT_ECLBS 0x20 /* Erase+Clr Lock Bit Stat */ |
| #define INTEL_CHIP_STAT_ESS 0x40 /* Erase Suspend Status */ |
| #define INTEL_CHIP_STAT_RDY 0x80 /* WSM Mach Status, 1=rdy */ |
| |
| #define INTEL_CHIP_STAT_ERR (INTEL_CHIP_STAT_VPPS | INTEL_CHIP_STAT_DPS | \ |
| INTEL_CHIP_STAT_ECLBS | INTEL_CHIP_STAT_PSLBS) |
| |
| /* Lock Configuration */ |
| #define INTEL_CHIP_RD_ID_LOCK 0x01 /* Bit 0 of each byte */ |
| |
| MV_STATUS intelFlashSecErase(MV_FLASH_INFO *pFlash, MV_U32 secNum); |
| MV_VOID intelFlashReset(MV_FLASH_INFO *pFlash); |
| MV_STATUS intelFlashProg(MV_FLASH_INFO *pFlash, MV_U32 offset, MV_U32 data); |
| MV_BOOL intelFlashSecLockGet(MV_FLASH_INFO *pFlash, MV_U32 secNum); |
| MV_STATUS intelFlashSecLock(MV_FLASH_INFO *pFlash, MV_U32 secNum, MV_BOOL enable); |
| MV_U32 intelFlashGetHwBuffSize(MV_FLASH_INFO *pFlash); |
| MV_STATUS intelFlashHwBufferProg(MV_FLASH_INFO *pFlash, MV_U32 offset, MV_U32 byteCount, MV_U8 *pData); |
| |
| #endif /* __INCmvIntelFlashH */ |