blob: fc212217cc57980ed47c728004293f1321b8a883 [file] [log] [blame]
//--------------------------------------------------------
//
//
// Melfas MCS8000 Series Download base v1.0 2010.04.05
//
//
//--------------------------------------------------------
#ifndef __MELFAS_FIRMWARE_DOWNLOAD_H__
#define __MELFAS_FIRMWARE_DOWNLOAD_H__
//=====================================================================
//
// MELFAS Firmware download pharameters
//
//=====================================================================
#define MELFAS_TRANSFER_LENGTH (32/8) // Fixed value
#define MELFAS_FIRMWARE_MAX_SIZE (32*1024)
#define MELFAS_2CHIP_DOWNLOAD_ENABLE 0 // 0 : 1Chip Download, 1: 2Chip Download
// For delay function test. ( Disable after Porting is finished )
#define MELFAS_ENABLE_DELAY_TEST 0
// ISC download mode
#define MELFAS_CORE_FIRWMARE_UPDATE_ENABLE 1 // 0 : disable, 1: enable
#define MELFAS_PRIVATE_CONFIGURATION_UPDATE_ENABLE 1 // 0 : disable, 1: enable
#define MELFAS_PUBLIC_CONFIGURATION_UPDATE_ENABLE 1 // 0 : disable, 1: enable
//----------------------------------------------------
// ISC Mode
//----------------------------------------------------
#define MELFAS_CRC_CHECK_ENABLE 1
#define ISC_MODE_SLAVE_ADDRESS 0x48
#define ISC_READ_DOWNLOAD_POSITION 0 //0 : USE ISC_PRIVATE_CONFIG_FLASH_START 1: READ FROM RMI MAP(0x61,0x62)
#define ISC_PRIVATE_CONFIG_FLASH_START 25
#define ISC_PUBLIC_CONFIG_FLASH_START 28
//address for ISC MODE
#define ISC_DOWNLOAD_MODE_ENTER 0x5F
#define ISC_DOWNLOAD_MODE 0x60
#define ISC_PRIVATE_CONFIGURATION_START_ADDR 0x61
#define ISC_PUBLIC_CONFIGURATION_START_ADDR 0x62
#define ISC_READ_SLAVE_CRC_OK 0x63 // return value from slave
#define ISC_CORE_FIRMWARE_VERSION_ADDR 0x64
//mode
#define ISC_CORE_FIRMWARE_DL_MODE 0x01
#define ISC_PRIVATE_CONFIGURATION_DL_MODE 0x02
#define ISC_PUBLIC_CONFIGURATION_DL_MODE 0x03
#define ISC_SLAVE_DOWNLOAD_START 0x04
//----------------------------------------------------
// ISP Mode
//----------------------------------------------------
#define ISP_MODE_ERASE_FLASH 0x01
#define ISP_MODE_SERIAL_WRITE 0x02
#define ISP_MODE_SERIAL_READ 0x03
#define ISP_MODE_NEXT_CHIP_BYPASS 0x04
//----------------------------------------------------
// Return values of download function
//----------------------------------------------------
#define MCSDL_RET_SUCCESS 0x00
#define MCSDL_RET_ERASE_FLASH_VERIFY_FAILED 0x01
#define MCSDL_RET_PROGRAM_VERIFY_FAILED 0x02
#define MCSDL_FIRMWARE_UPDATE_MODE_ENTER_FAILED 0x03
#define MCSDL_FIRMWARE_UPDATE_FAILED 0x04
#define MCSDL_LEAVE_FIRMWARE_UPDATE_MODE_FAILED 0x05
#define MCSTS_FIRMWARE_VER_REG_MASTER 0x31 //F/W Version MASTER
#define MCSTS_FIRMWARE_VER_REG_SLAVE 0x32 //F/W Version SLAVE
#define MCSDL_RET_PROGRAM_SIZE_IS_WRONG 0x10
#define MCSDL_RET_VERIFY_SIZE_IS_WRONG 0x11
#define MCSDL_RET_WRONG_BINARY 0x12
#define MCSDL_RET_READING_HEXFILE_FAILED 0x21
#define MCSDL_RET_FILE_ACCESS_FAILED 0x22
#define MCSDL_RET_MELLOC_FAILED 0x23
#define MCSDL_RET_WRONG_MODULE_REVISION 0x30
//----------------------------------------------------
// When you can't control VDD nor CE.
// Set this value 1
// Then Melfas Chip can prepare chip reset.
//----------------------------------------------------
#define MELFAS_USE_PROTOCOL_COMMAND_FOR_DOWNLOAD 0 // If 'enable download command' is needed ( Pinmap dependent option ).
//============================================================
//
// Delay parameter setting
//
// These are used on 'mcsdl_delay()'
//
//============================================================
#if 1 //0905 SEC
void mcsdl_vdd_on(void);
void mcsdl_vdd_off(void);
#endif
#define MCSDL_DELAY_1US 1
#define MCSDL_DELAY_2US 2
#define MCSDL_DELAY_3US 3
#define MCSDL_DELAY_5US 5
#define MCSDL_DELAY_7US 7
#define MCSDL_DELAY_10US 10
#define MCSDL_DELAY_15US 15
#define MCSDL_DELAY_20US 20
#define MCSDL_DELAY_40US 40
#define MCSDL_DELAY_100US 100
#define MCSDL_DELAY_150US 150
#define MCSDL_DELAY_300US 300
#define MCSDL_DELAY_500US 500
#define MCSDL_DELAY_800US 800
#define MCSDL_DELAY_1MS 1000
#define MCSDL_DELAY_5MS 5000
#define MCSDL_DELAY_10MS 10000
#define MCSDL_DELAY_25MS 25000
#define MCSDL_DELAY_30MS 30000
#define MCSDL_DELAY_40MS 40000
#define MCSDL_DELAY_45MS 45000
#define MCSDL_DELAY_60MS 60000
//============================================================
//
// Porting factors for Baseband
//
//============================================================
#include "mcs8000_download_porting.h"
//----------------------------------------------------
// Functions
//----------------------------------------------------
int mcsdl_download_binary_data(INT32 hw_ver); // with binary type .c file.
int mcsdl_download_binary_file(void); // with binary type .bin file.
#if MELFAS_ENABLE_DELAY_TEST
void mcsdl_delay_test(INT32 nCount);
#endif
int mms100_ISC_download_binary_data(int hw_ver);
//---------------------------------
// Delay functions
//---------------------------------
void mcsdl_delay(UINT32 nCount);
#endif //#ifndef __MELFAS_FIRMWARE_DOWNLOAD_H__