⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_drv_amd.h

📁 MTK手机平台下载工具FLASHTOOL驱动源码
💻 H
📖 第 1 页 / 共 2 页
字号:
// AMD Enter Auto-Select Mode 
#define AMD_ENTER_AUTOSELECT_MODE_DATA1		0xAA
#define AMD_ENTER_AUTOSELECT_MODE_DATA2		0x55
#define AMD_ENTER_AUTOSELECT_MODE_DATA3		0x90

// AMD Device ID Read Address 
#define AMD_MANUFACTURE_ID_ADDR				0x00
#define AMD_DEVICE_CODE_ADDR				0x01
#define AMD_EXT_DEVICE_CODE1_ADDR			0x0E
#define AMD_EXT_DEVICE_CODE2_ADDR			0x0F

// AMD Enter CFI 
#define AMD_ENTER_CFI_ADDR					0x55
#define AMD_ENTER_CFI_DATA					0x98

// AMD CFI Boot Sector Flag 
#define AMD_CFI_BOOT_SECTOR_FLAG_ADDR		0x4F
#define AMD_CFI_UNIFORM_DEV					0x0000
#define AMD_CFI_TOP_BOTTOM_WP_DEV			0x0001
#define AMD_CFI_BOTTOM_DEV					0x0002
#define AMD_CFI_TOP_DEV						0x0003
#define AMD_CFI_TOP_BOTTOM_DEV				0x0004
#define AMD_CFI_BANK_A_REGION_INFO_ADDR		0x58

// AMD Reset 
#define AMD_RESET_TO_READ_MODE_DATA1		0xF0

// AMD Sector Erase 
#define AMD_SECTOR_ERASE_DATA1				0xAA
#define AMD_SECTOR_ERASE_DATA2				0x55
#define AMD_SECTOR_ERASE_DATA3				0x80
#define AMD_SECTOR_ERASE_DATA4				0xAA
#define AMD_SECTOR_ERASE_DATA5				0x55
#define AMD_SECTOR_ERASE_DATA6				0x30

// AMD Enter Unlock Bypass Mode 
#define AMD_ENTER_UNLOCK_BYPASS_DATA1		0xAA
#define AMD_ENTER_UNLOCK_BYPASS_DATA2		0x55
#define AMD_ENTER_UNLOCK_BYPASS_DATA3		0x20

// AMD Unlock Bypass Mode Program 
#define AMD_UNLOCK_BYPASS_PGM_DATA1			0xA0

// AMD Exit Unlock Bypass Mode 
#define AMD_EXIT_UNLOCK_BYPASS_DATA1		0x90
#define AMD_EXIT_UNLOCK_BYPASS_DATA2		0x00

// AMD Word Program 
#define AMD_WORD_PGM_DATA1					0xAA
#define AMD_WORD_PGM_DATA2					0x55
#define AMD_WORD_PGM_DATA3					0xA0

// AMD Buffer Program
#define AMD_BUF_PGM_DATA1					0xAA
#define AMD_BUF_PGM_DATA2					0x55
#define AMD_BUF_PGM_DATA3					0x25
#define AMD_BUF_PGM_LAST					0x29

// AMD Polling Status Bits 
#define AMD_DQ7_POLL_BIT					0x0080
#define AMD_DQ6_TOGGLE_BIT					0x0040
#define AMD_DQ5_TIMEOUT_ERR_BIT				0x0020

// AMD Sector Protection Command Address 
#define AMD_PROTECT_WP_ADDR					0x02		// 00000010 
#define AMD_PROTECT_EP_ADDR					AMD_PROTECT_WP_ADDR
#define AMD_PROTECT_PL_ADDR					0x0A		// 00001010 
#define AMD_PROTECT_SL_ADDR					0x12		// 00010010 

// AMD Sector PPB Program 
#define AMD_PROTECT_PPB_PGM_DATA1			0xAA
#define AMD_PROTECT_PPB_PGM_DATA2			0x55
#define AMD_PROTECT_PPB_PGM_DATA3			0x60
#define AMD_PROTECT_PPB_PGM_DATA4			0x68	// <-- 100us timeout is required between DATA4 and DATA5 
#define AMD_PROTECT_PPB_PGM_DATA5			0x48

// AMD Sector PPB Status 
#define AMD_PROTECT_PPB_STATUS_DATA1		0xAA
#define AMD_PROTECT_PPB_STATUS_DATA2		0x55
#define AMD_PROTECT_PPB_STATUS_DATA3		0x60
#define AMD_PROTECT_PPB_STATUS_DATA4		0x48

// AMD All Sector PPBs Erase 
#define AMD_PROTECT_PPB_ERASE_DATA1			0xAA
#define AMD_PROTECT_PPB_ERASE_DATA2			0x55
#define AMD_PROTECT_PPB_ERASE_DATA3			0x60
#define AMD_PROTECT_PPB_ERASE_DATA4			0x60	// <-- 1.2ms timeout is required between DATA4 and DATA5 
#define AMD_PROTECT_PPB_ERASE_DATA5			0x40

// AMD Sector Protection Status Bits 
#define AMD_PROTECT_PPB_LOCK_BIT_SET		0x02
#define AMD_PROTECT_PPB_SET					0x01

#ifdef __cplusplus
extern "C" {
#endif

//------------------------------------------------------------------------------
// Callback Function Set                                                        
//------------------------------------------------------------------------------
extern const NOR_CMD_Callback_S		AMD_CMD_CB_UNLOCK_BYPASS_PGM;
extern const NOR_CMD_Callback_S		AMD_CMD_CB_MIRRORBIT_BUF_PGM;
extern const NOR_CMD_Callback_S		AMD_CMD_CB_WORD_PGM;

//------------------------------------------------------------------------------
// Memory Sector Layout Set                                                     
//------------------------------------------------------------------------------
extern const NOR_Die_Layout_S		AMD_32;
extern const NOR_Die_Layout_S		AMD_64;
// Top Boot 
extern const NOR_Die_Layout_S		AMD_T_16;
extern const NOR_Die_Layout_S		AMD_T_32;
extern const NOR_Die_Layout_S		AMD_T_64;
extern const NOR_Die_Layout_S		AMD_T_128;
extern const NOR_Die_Layout_S		AMD_T_256;
// Bottom Boot 
extern const NOR_Die_Layout_S		AMD_B_16;
extern const NOR_Die_Layout_S		AMD_B_32;
extern const NOR_Die_Layout_S		AMD_B_64;
extern const NOR_Die_Layout_S		AMD_B_128;
extern const NOR_Die_Layout_S		AMD_B_256;
// Top/Bottom Boot 
extern const NOR_Die_Layout_S		AMD_TB_32;
extern const NOR_Die_Layout_S		AMD_TB_64;
extern const NOR_Die_Layout_S		AMD_TB_128;

//------------------------------------------------------------------------------
// MirrorBit Memory Sector Layout Set                                           
//------------------------------------------------------------------------------

// MirrorBit Bottom Boot 
extern const NOR_Die_Layout_S		AMD_MB_B_64;
// MirrorBit Top Boot 
extern const NOR_Die_Layout_S		AMD_MB_T_64;
// MirrorBit Top/Bottom Boot 
extern const NOR_Die_Layout_S		AMD_MB_TB_128;
extern const NOR_Die_Layout_S		AMD_MB_TB_256;

//------------------------------------------------------------------------------
// Check Device ID Callback Function                                            
//------------------------------------------------------------------------------
extern bool		AMD_CheckDevID(const uint16 dev, volatile uint16 *die1_addr, volatile uint16 *die2_addr);
//------------------------------------------------------------------------------
// Check If Device Is Idle Callback Function                                    
//------------------------------------------------------------------------------
extern bool		AMD_CheckDevIdle(const uint32 addr);
//------------------------------------------------------------------------------
// Erase Related Callback Function                                              
//------------------------------------------------------------------------------
extern void		AMD_Erase_CMD(const uint32 blockaddr);
extern STATUS_E	AMD_Erase_CheckDone_By_Polling(const uint32 blockaddr);
//------------------------------------------------------------------------------
// Program Related Callback Function                                            
//------------------------------------------------------------------------------
extern void		AMD_PreProcess(const uint16 dev);
extern void		AMD_UnlockBypass_Enter_CMD(const uint32 blockaddr);
extern void		AMD_UnlockBypass_Exit_CMD(const uint32 blockaddr);
extern void		AMD_UnlockBypass_Program_CMD(const uint32 blockaddr, const uint32 prog_addr, const uint16 data);
extern void		AMD_Word_Program_CMD(const uint32 blockaddr, const uint32 prog_addr, const uint16 data);
extern STATUS_E	AMD_Program_CheckDone_By_Toggle(const uint32 prog_addr);
//------------------------------------------------------------------------------
// MirrorBit Related Callback Function                                          
//------------------------------------------------------------------------------
extern void 	AMD_MirrorBit_Erase_CMD(const uint32 blockaddr);
extern void 	AMD_MirrorBit_PreProcess(const uint16 dev);
extern void 	AMD_MirrorBit_Buf_Program_CMD(const uint32 blockaddr, const uint32 prog_addr, const uint16 *data, const uint32 length_in_word);
//------------------------------------------------------------------------------
// Protection Related Callback Function                                         
//------------------------------------------------------------------------------
#ifdef AMD_PROTECTION_ENABLED
extern void		AMD_UnprotectChip(const uint16 dev);
extern bool		AMD_Protection_PPB_Program_CMD(uint32 blockaddr);
extern bool		AMD_Protection_PPB_Status_CMD(uint32 blockaddr);
extern bool		AMD_Protection_Erase_All_PPBs_CMD(uint32 blockaddr);
#endif

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -