亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lld_wsxxx_asp.c

?? Spansion 公司(原AMD flash 部門 / 富士通 閃存部門) FLASH 訪問的參考函數
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* lld_wsxxx.asp.c - Source Code for Spansion's Advance Sector Protection Driver */
/* v7.2.0 */
/**************************************************************************
* Copyright (C)2007 Spansion LLC. All Rights Reserved. 
*
* This software is owned and published by: 
* Spansion LLC, 915 DeGuigne Dr. Sunnyvale, CA  94088-3453 ("Spansion").
*
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
*
* This software constitutes driver source code for use in programming Spansion's 
* Flash memory components. This software is licensed by Spansion to be adapted only 
* for use in systems utilizing Spansion's Flash memories. Spansion is not be 
* responsible for misuse or illegal use of this software for devices not 
* supported herein.  Spansion is providing this source code "AS IS" and will 
* not be responsible for issues arising from incorrect user implementation 
* of the source code herein.  
*
* SPANSION MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, 
* REGARDING THE SOFTWARE, ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED 
* USE, INCLUDING, WITHOUT LIMITATION, NO IMPLIED WARRANTY OF MERCHANTABILITY, 
* FITNESS FOR A  PARTICULAR PURPOSE OR USE, OR NONINFRINGEMENT.  SPANSION WILL 
* HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, NEGLIGENCE OR 
* OTHERWISE) FOR ANY DAMAGES ARISING FROM USE OR INABILITY TO USE THE SOFTWARE, 
* INCLUDING, WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, 
* SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, SAVINGS OR PROFITS, 
* EVEN IF SPANSION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  
*
* This software may be replicated in part or whole for the licensed use, 
* with the restriction that this Copyright notice must be included with 
* this software, whether used in part or whole, at all times.  
*/
#include "lld.h"
#include "lld_wsxxx_asp.h"

#define WSXXX_LOCK_REG_ENTRY      (0x40*LLD_DEV_MULTIPLIER)
#define WSXXX_PSWD_PROT_CMD_ENTRY (0x60*LLD_DEV_MULTIPLIER)
#define WSXXX_PSWD_UNLOCK_1       (0x25*LLD_DEV_MULTIPLIER)
#define WSXXX_PSWD_UNLOCK_2       (0x03*LLD_DEV_MULTIPLIER)
#define WSXXX_PSWD_UNLOCK_3       (0x29*LLD_DEV_MULTIPLIER)
#define WSXXX_PPB_ENTRY           (0xC0*LLD_DEV_MULTIPLIER)
#define WSXXX_PPB_ERASE_CONFIRM   (0x30*LLD_DEV_MULTIPLIER)
#define WSXXX_PPB_LOCK_ENTRY      (0x50*LLD_DEV_MULTIPLIER)
#define WSXXX_DYB_ENTRY           (0xE0*LLD_DEV_MULTIPLIER)
#define WSXXX_DYB_CLEAR           (0x01*LLD_DEV_MULTIPLIER)

/* WSxxx Commands */

/******************************************************************************
* 
* lld_LockRegEntryCmd - Lock register entry command.
*
* RETURNS: n/a
*
*/
void lld_LockRegEntryCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, WSXXX_LOCK_REG_ENTRY);
}

/******************************************************************************
* 
* lld_LockRegBitsProgramCmd - Lock register program command.
*
* RETURNS: n/a
*
*/
void lld_LockRegBitsProgramCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
FLASHDATA value				/* value to program to lock reg. */
)
{

  FLASH_WR(base_addr, 0, NOR_UNLOCK_BYPASS_PROGRAM_CMD);
  FLASH_WR(base_addr, 0x77, value);

}

/******************************************************************************
* 
* lld_LockRegBitsReadCmd - Lock register read command.
* Note: Need to issue lld_LockRegEntryCmd() before use this routine.
*
* RETURNS:  
* DQ0 Customer SecSi Sector Protection Bit  0 = set
* DQ1 Persistent Protection Mode Lock Bit   0 = set
* DQ2 Password Protection Mode Lock Bit     0 = set
*
*/
FLASHDATA lld_LockRegBitsReadCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{

	return(FLASH_RD(base_addr, 0x77));

}

/******************************************************************************
* 
* lld_LockRegExitCmd - Exit lock register read/write mode command.
*
* RETURNS: n/a
*
*/
void lld_LockRegExitCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{

  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_SETUP_CMD);
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_CMD);

}


#ifndef REMOVE_ASP_PASSWORD

/******************************************************************************
* 
* lld_PasswordProtectionEntryCmd - Write Password Protection Entry command sequence
*
* RETURNS: n/a
*
*/
void lld_PasswordProtectionEntryCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, WSXXX_PSWD_PROT_CMD_ENTRY);
}

/******************************************************************************
* 
* lld_PasswordProtectionProgramCmd - Write Password Protection Program command.
* Note: Need to issue lld_PasswordProtectionEntryCmd() before issue this routine.
* RETURNS: n/a
*
*/
void lld_PasswordProtectionProgramCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS   offset,
FLASHDATA pwd
)
{
  FLASH_WR(base_addr, offset, NOR_UNLOCK_BYPASS_PROGRAM_CMD);
  FLASH_WR(base_addr, offset, pwd);
}

/******************************************************************************
* 
* lld_PasswordProtectionReadCmd - Issue read password command
* Note: Need to issue lld_PasswordProtectionEntryCmd() before issue this routine.
* RETURNS: n/a
*
*/
void lld_PasswordProtectionReadCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
FLASHDATA *pwd0,
FLASHDATA *pwd1,
FLASHDATA *pwd2,
FLASHDATA *pwd3
)
{
  *pwd0 = FLASH_RD(base_addr, 0);
  *pwd1 = FLASH_RD(base_addr, 1);
  *pwd2 = FLASH_RD(base_addr, 2);
  *pwd3 = FLASH_RD(base_addr, 3);
}

/******************************************************************************
* 
* lld_PasswordProtectionUnlockCmd - Issue unlock password command.
* Note: Need to issue lld_PasswordProtectionEntryCmd() before issue this routine.
* RETURNS: n/a
*
*/
void lld_PasswordProtectionUnlockCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
FLASHDATA pwd0,
FLASHDATA pwd1,
FLASHDATA pwd2,
FLASHDATA pwd3
)
{
  FLASH_WR(base_addr, 0, WSXXX_PSWD_UNLOCK_1);
  FLASH_WR(base_addr, 0, WSXXX_PSWD_UNLOCK_2);
  FLASH_WR(base_addr, 0, pwd0);
  FLASH_WR(base_addr, 1, pwd1);
  FLASH_WR(base_addr, 2, pwd2);
  FLASH_WR(base_addr, 3, pwd3);
  FLASH_WR(base_addr, 0, WSXXX_PSWD_UNLOCK_3);

}

/******************************************************************************
* 
* lld_PasswordProtectionExitCmd - Issue exit password protection mode command.
*
* RETURNS: n/a
*
*/
void lld_PasswordProtectionExitCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_SETUP_CMD);
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_CMD);
}

#endif	/* REMOVE_ASP_PASSWORD */

#ifndef REMOVE_ASP_PPB

/******************************************************************************
* 
* lld_PpbEntryCmd - Non-Volatile Sector Protection Entry Command.
* Ppb entry command will disable the reads and writes for the bank selectd.
* RETURNS: n/a
*
*/
void lld_PpbEntryCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS       offset		
)
{

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1+(offset & SA_OFFSET_MASK), WSXXX_PPB_ENTRY);
}

/******************************************************************************
* 
* lld_PpbProgramCmd - Program Non-Volatile Sector Protection Command.
* Note: Need to issue lld_PpbEntryCmd() before issue this routine.
* RETURNS: n/a
*
*/
void lld_PpbProgramCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS   offset			/* Sector offset address */
)
{
  FLASH_WR(base_addr, 0, NOR_UNLOCK_BYPASS_PROGRAM_CMD);
  FLASH_WR(base_addr, offset, 0);
}

/******************************************************************************
* 
* lld_PpbAllEraseCmd - Erase Non-Volatile Protection for All  Sectors Command.
* Note: Need to issue lld_PpbEntryCmd() before issue this routine.
* RETURNS: n/a
*
*/
void lld_PpbAllEraseCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  FLASH_WR(base_addr, 0, NOR_ERASE_SETUP_CMD);
  FLASH_WR(base_addr, 0, WSXXX_PPB_ERASE_CONFIRM);
}

/******************************************************************************
* 
* lld_PpbStatusReadCmd - Read Non-Volatile Sector Status Command.
* Note: Need to issue lld_PpbEntryCmd() before issue this routine.
* Sector status 0 is locked and 1 is unlocked.
* RETURNS: 
*
*/
FLASHDATA lld_PpbStatusReadCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS   offset			/* sector offset address */
)
{
  return(FLASH_RD(base_addr, offset));
}

/******************************************************************************
* 
* lld_PpbExitCmd - Exit the Non-Volatile Sector Status mode.
* After the exit command the device goes back to memory array mode.
* RETURNS: n/a
*
*/
void lld_PpbExitCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_SETUP_CMD);
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_CMD);
}
#endif /* REMOVE_ASP_PPB */


#ifndef REMOVE_ASP_PPB_LOCK_BIT

/******************************************************************************
* 
* lld_PpbLockBitEntryCmd - Issue Persistent Protection Bit Lock Bit Entry Command.
* The Ppb Lock Bit is a global bit for all sectors. 
* RETURNS: n/a
*
*/
void lld_PpbLockBitEntryCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, WSXXX_PPB_LOCK_ENTRY);
}

/******************************************************************************
* 
* lld_PpbLockBitSetCmd - Issue set Persistent Protection Bit Lock Bit command.
* Once bit is set there is no command to unset it only hardware reset and power up 
* will clear the bit.
* RETURNS: n/a
*
*/
void lld_PpbLockBitSetCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  FLASH_WR(base_addr, 0, NOR_UNLOCK_BYPASS_PROGRAM_CMD);
  FLASH_WR(base_addr, 0, 0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区久久| 99视频精品在线| 亚洲高清免费视频| 亚洲综合免费观看高清完整版 | 一区二区在线观看免费视频播放| 久久亚洲精精品中文字幕早川悠里 | 国产精品美女久久久久久2018| 精品理论电影在线观看| 精品少妇一区二区三区在线播放| 日韩一区二区在线免费观看| 91麻豆精品国产91久久久使用方法| 欧美色视频在线| 日韩欧美一级二级三级| 欧美mv和日韩mv的网站| 欧美国产国产综合| 亚洲一区在线看| 热久久免费视频| 国产精品自拍在线| 国产高清亚洲一区| 92精品国产成人观看免费| 欧美亚洲自拍偷拍| 精品国产乱码久久久久久久 | 一本久久综合亚洲鲁鲁五月天 | 成人aa视频在线观看| 成人午夜视频福利| 在线观看日韩av先锋影音电影院| 欧美日韩成人一区| 26uuu国产在线精品一区二区| 国产午夜亚洲精品午夜鲁丝片| 国产精品传媒入口麻豆| 亚洲6080在线| 激情综合网最新| 一本久道中文字幕精品亚洲嫩| 91精品福利视频| 久久影音资源网| 亚洲女人的天堂| 国产精品一二三区| 91影院在线免费观看| 在线观看视频91| 欧美一区永久视频免费观看| 5858s免费视频成人| 91精品福利在线一区二区三区| 欧美xxxxxxxx| 亚洲图片自拍偷拍| 韩国av一区二区三区在线观看| 99久久精品免费看| 精品国产99国产精品| 欧美国产精品久久| 国产一区二区三区四区五区入口| 91玉足脚交白嫩脚丫在线播放| 日韩欧美国产电影| 尤物在线观看一区| 成人福利视频网站| 欧美精品一区二区高清在线观看| 亚洲欧洲精品一区二区三区不卡| 日韩福利视频导航| 色婷婷亚洲一区二区三区| 337p日本欧洲亚洲大胆精品| 秋霞成人午夜伦在线观看| 91麻豆免费看片| 欧美国产国产综合| 美女久久久精品| 欧美日韩aaaaa| 亚洲一级不卡视频| 欧美自拍丝袜亚洲| 国产精品免费视频网站| 国产精品 欧美精品| 久久亚洲精品小早川怜子| 天天综合网天天综合色| 91网页版在线| 亚洲美女视频在线| 成人激情开心网| 国产亚洲婷婷免费| 国产一区二区三区久久久| 日韩一区二区麻豆国产| 亚洲在线视频网站| 91美女福利视频| 亚洲欧美电影一区二区| 不卡一区二区在线| 国产精品美女一区二区在线观看| 国产精品综合视频| 欧美国产亚洲另类动漫| 成人综合在线网站| 国产视频一区不卡| 国产精品91xxx| 中文字幕第一区| 国产精品99久久久久久宅男| 欧美大片在线观看一区二区| 久久精品国产亚洲a| 在线播放中文字幕一区| 五月天国产精品| 日韩免费视频线观看| 老司机精品视频导航| 久久久久国产成人精品亚洲午夜| 国产精品911| 中文字幕一区二区三区精华液| 91日韩精品一区| 亚洲国产精品久久艾草纯爱| 欧美日韩一卡二卡| 美女国产一区二区| 国产精品久久网站| 色综合激情久久| 丝袜美腿亚洲综合| 国产日韩欧美精品综合| 成人av在线资源网站| 玉米视频成人免费看| 正在播放一区二区| 成人av第一页| 美女性感视频久久| 综合欧美亚洲日本| 日韩一区二区三区电影在线观看| 成人天堂资源www在线| 天堂蜜桃一区二区三区| 国产精品素人一区二区| 欧美精品 国产精品| 99久久伊人精品| 久久爱www久久做| 艳妇臀荡乳欲伦亚洲一区| 精品国产区一区| 欧美日韩亚洲丝袜制服| 国产成人av电影| 热久久免费视频| 亚洲综合av网| 国产精品激情偷乱一区二区∴| 日韩午夜在线播放| 欧美影视一区在线| 成人av资源在线| 国产精品一级在线| 欧美a一区二区| 亚洲永久免费视频| 国产精品美女久久久久av爽李琼| 日韩免费性生活视频播放| 91久久精品一区二区三| www.综合网.com| 国产成人av一区二区三区在线观看| 日韩不卡一区二区三区 | 日韩激情中文字幕| 亚洲女爱视频在线| 亚洲欧洲精品一区二区三区不卡| 精品sm捆绑视频| 欧美体内she精高潮| 色综合久久久久| thepron国产精品| 成人免费毛片高清视频| 久久国产精品第一页| 亚洲一区国产视频| 亚洲综合色婷婷| 一区二区三区色| 一级精品视频在线观看宜春院| 成人免费在线观看入口| 国产精品久久毛片| 自拍偷拍亚洲激情| 亚洲精品国产一区二区三区四区在线| 精品女同一区二区| 2021国产精品久久精品| 精品国产欧美一区二区| 久久一区二区视频| 久久亚洲精华国产精华液 | 五月天国产精品| 天天操天天综合网| 奇米综合一区二区三区精品视频| 日韩成人伦理电影在线观看| 美女www一区二区| 国产精品影视在线观看| 国产精品乡下勾搭老头1| 成人午夜视频在线| 91丨国产丨九色丨pron| 91国偷自产一区二区三区观看| 欧美日韩情趣电影| 欧美另类久久久品| 久久综合色综合88| 国产精品久久久久婷婷| 亚洲午夜一区二区| 麻豆精品一区二区三区| 国产91丝袜在线播放九色| 色综合久久久网| 欧美一区午夜精品| 国产精品视频yy9299一区| 一区二区三区成人| 美女性感视频久久| av在线免费不卡| 欧美一级日韩免费不卡| 欧美激情在线一区二区三区| 亚洲主播在线播放| 国产一区二区在线视频| 在线观看www91| 久久久久久久久久久久久女国产乱| 最新久久zyz资源站| 美女在线视频一区| 91香蕉视频mp4| 日韩一区二区三区视频| 亚洲欧美乱综合| 国产精品综合在线视频| 欧美吞精做爰啪啪高潮| 国产欧美日韩久久| 美女视频黄 久久| 在线精品视频一区二区三四| 久久只精品国产| 石原莉奈在线亚洲二区| 91浏览器在线视频|