blob: 77e2227b6922bd818c28089e9b7ecce0afbda12f [file] [log] [blame]
/*******************************************************************************
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 __INCmvAmdFlashH
#define __INCmvAmdFlashH
#include "mvFlashCom.h"
/* AMD Flash IDs */
#define AMD_FID_LV040B 0x4F /* 29LV040B ID */
/* 4 Mbit, 512K x 8, */
/* 8 64K x 8 uniform sectors */
#define AMD_FID_F040B 0xA4 /* 29F040B ID */
/* 4 Mbit, 512K x 8, */
/* 8 64K x 8 uniform sectors */
#define STM_FID_M29W040B 0xE3 /* M29W040B ID */
/* 4 Mbit, 512K x 8, */
/* 8 64K x 8 uniform sectors */
#define AMD_FID_F080B 0xD5 /* 29F080 ID ( 1 M) */
/* 8 Mbit, 512K x 16, */
/* 8 64K x 16 uniform sectors */
#define AMD_FID_F016D 0xAD /* 29F016 ID ( 2 M x 8) */
#define AMD_FID_F032B 0x41 /* 29F032 ID ( 4 M x 8) */
#define AMD_FID_LV116DT 0xC7 /* 29LV116DT ( 2 M x 8, top boot sect)*/
#define AMD_FID_LV016B 0xc8 /* 29LV016 ID ( 2 M x 8) */
#define AMD_FID_LV400T 0x22B9 /* 29LV400T ID ( 4 M, top boot sector) */
#define AMD_FID_LV400B 0x22BA /* 29LV400B ID ( 4 M, bottom boot sect) */
#define AMD_FID_LV033C 0xA3 /* 29LV033C ID ( 4 M x 8) */
#define AMD_FID_LV065D 0x93 /* 29LV065D ID ( 8 M x 8) */
#define AMD_FID_LV800T 0x22DA /* 29LV800T ID ( 8 M, top boot sector) */
#define AMD_FID_LV800B 0x225B /* 29LV800B ID ( 8 M, bottom boot sect) */
#define AMD_FID_LV160T 0x22C4 /* 29LV160T ID (16 M, top boot sector) */
#define AMD_FID_LV160B 0x2249 /* 29LV160B ID (16 M, bottom boot sect) */
#define AMD_FID_LV320T 0x22F6 /* 29LV320T ID (32 M, top boot sector) */
#define AMD_FID_LV320B 0x22F9 /* 29LV320B ID (32 M, bottom boot sect) */
#define AMD_FID_DL322T 0x2255 /* 29DL322T ID (32 M, top boot sector) */
#define AMD_FID_DL322B 0x2256 /* 29DL322B ID (32 M, bottom boot sect) */
#define AMD_FID_DL323T 0x2250 /* 29DL323T ID (32 M, top boot sector) */
#define AMD_FID_DL323B 0x2253 /* 29DL323B ID (32 M, bottom boot sect) */
#define AMD_FID_DL324T 0x225C /* 29DL324T ID (32 M, top boot sector) */
#define AMD_FID_DL324B 0x225F /* 29DL324B ID (32 M, bottom boot sect) */
#define AMD_S29GL128N 0x227E /* S29GL128N spansion 128Mbit flash */
#define AMD_FID_DL640 0x227E /* 29DL640D ID (64 M, dual boot sectors)*/
#define AMD_FID_MIRROR 0x227E /* 1st ID word for MirrorBit family */
#define AMD_FID_LV640U_2 0x220C /* 2d ID word for AM29LV640M at 0x38 */
#define AMD_FID_LV640U_3 0x2201 /* 3d ID word for AM29LV640M at 0x3c */
#define AMD_FID_LV128U_2 0x2212 /* 2d ID word for AM29LV128M at 0x38 */
#define AMD_FID_LV128U_3 0x2200 /* 3d ID word for AM29LV128M at 0x3c */
#define AMD_FID_LV640U 0x22D7 /* 29LV640U ID (64 M, uniform sectors) */
#define STM_FID_29W040B 0xE3 /* M29W040B ID (4M = 512K x 8) */
/* SST Flash IDs */
#define SST_39VF_020 0xD6 /* SST39VF020 (256KB = 4K * 64) */
/* Amd Flash APIs */
#define AMD_EARASE_MILI_TIMEOUT 8000 /* mili seconds */
#define AMD_PROG_TIMEOUT 0xA0000 /* number of loops */
/* Commands */
#define AMD_CHIP_CMD_RST 0xF0 /* reset flash */
#define AMD_CHIP_UNLOCK_CMD1 0xAA /* 1st data for unlock */
#define AMD_CHIP_UNLOCK_ADDR1 0x555 /* 1st addr for unlock */
#define SST_CHIP_UNLOCK_ADDR1 0x5555 /* 1st addr for unlock */
#define AMD_CHIP_UNLOCK_CMD2 0x55 /* 2nd data for unlock */
#define AMD_CHIP_UNLOCK_ADDR2 0x2AA /* 2nd addr for unlock */
#define SST_CHIP_UNLOCK_ADDR2 0x2AAA /* 2nd addr for unlock */
#define AMD_CHIP_CMD_PROG 0xA0 /* 1st data for program command */
#define AMD_CHIP_ADDR_PROG 0x555 /* 1st addr for program command */
#define SST_CHIP_ADDR_PROG 0x5555 /* 1st addr for program command */
#define AMD_CHIP_CMD_ERASE1 0x80 /* 1st data for erase command */
#define AMD_CHIP_ADDR_ERASE1 0x555 /* 1st addr for erase command */
#define SST_CHIP_ADDR_ERASE1 0x5555 /* 1st addr for erase command */
#define AMD_CHIP_CMD_ERASE2 0xAA /* 2nd data for erase command */
#define AMD_CHIP_ADDR_ERASE2 0x555 /* 2nd addr for erase command */
#define SST_CHIP_ADDR_ERASE2 0x5555 /* 2nd addr for erase command */
#define AMD_CHIP_CMD_ERASE3 0x55 /* 3rd data for erase command */
#define AMD_CHIP_ADDR_ERASE3 0x2AA /* 3rd addr for erase command */
#define SST_CHIP_ADDR_ERASE3 0x2AAA /* 3rd addr for erase command */
#define AMD_CHIP_CMD_ERASE4 0x30 /* 4rd data for erase command */
/* there are few ways to check if the AMD flash is busy or not: */
/* 1) by checking DQ7 [and 5 - optional ] */
/* 2) by checking toggle bit DQ7 (linux) */
/* here we used the first option. */
/* status register bits */
#define AMD_CHIP_STAT_DQ7_MASK 0x80 /* Device is ready */
/* ID and Lock Configuration */
#define AMD_CHIP_RD_ID_MAN 0x01 /* Manufacturer code = 0x89 */
MV_STATUS amdFlashSecErase(MV_FLASH_INFO *pFlash, MV_U32 secNum);
MV_VOID amdFlashReset(MV_FLASH_INFO *pFlash);
MV_STATUS amdFlashProg(MV_FLASH_INFO *pFlash, MV_U32 offset, MV_U32 data);
#endif /* __INCmvAmdFlashH */