diff options
author | codeworkx <codeworkx@cyanogenmod.com> | 2012-09-22 09:48:20 +0200 |
---|---|---|
committer | codeworkx <codeworkx@cyanogenmod.com> | 2012-09-22 14:02:16 +0200 |
commit | 2489007e7d740ccbc3e0a202914e243ad5178787 (patch) | |
tree | b8e6380ea7b1da63474ad68a5dba997e01146043 /drivers/input/touchscreen/grande_download.h | |
parent | 5f67568eb31e3a813c7c52461dcf66ade15fc2e7 (diff) | |
download | kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.zip kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.tar.gz kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.tar.bz2 |
merge opensource jb u5
Change-Id: I1aaec157aa196f3448eff8636134fce89a814cf2
Diffstat (limited to 'drivers/input/touchscreen/grande_download.h')
-rwxr-xr-x | drivers/input/touchscreen/grande_download.h | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/grande_download.h b/drivers/input/touchscreen/grande_download.h new file mode 100755 index 0000000..4976c43 --- /dev/null +++ b/drivers/input/touchscreen/grande_download.h @@ -0,0 +1,327 @@ +//------------------------------------------------------------------ +// +// MELFAS Firmware download base code v6 For MCS5080 2008/11/04 +// +//------------------------------------------------------------------ + +#ifndef __MELFAS_FIRMWARE_DOWNLOAD_H__ +#define __MELFAS_FIRMWARE_DOWNLOAD_H__ + +//============================================================ +// +// Porting section 1. Type define +// +//============================================================ + +typedef char INT8; +typedef unsigned char UINT8; +typedef short INT16; +typedef unsigned short UINT16; +typedef int INT32; +typedef unsigned int UINT32; +typedef unsigned char BOOLEAN; + + +#ifndef TRUE +#define TRUE (1==1) +#endif + +#ifndef FALSE +#define FALSE (1==0) +#endif + +#ifndef NULL +#define NULL 0 +#endif + +//============================================================ +// Baseand include +//============================================================ +//#include "drv_io.h" +//#include "drv_i2c.h" +//#include "drv_uart.h" + +//============================================================ +// +// Porting section 2. Options +// +//============================================================ + +// Selection of i2c function ( This must be 1 ) +#define USE_BASEBAND_I2C_FUNCTION 1 + +// Disable downlaoding, if module version does not match. +#define MELFAS_DISABLE_DOWNLOAD_IF_MODULE_VERSION_DOES_NOT_MATCH 0 + +// If 'enable download command' is needed ( Pinmap dependent option ). +#define MELFAS_USE_PROTOCOL_COMMAND_FOR_DOWNLOAD 0 + +// For printing debug information. ( Please check 'printing function' ) +#define MELFAS_ENABLE_DBG_PRINT 1 +#define MELFAS_ENABLE_DBG_PROGRESS_PRINT 1 + +// For delay function test. ( Disable after Porting is finished ) +#define MELFAS_ENABLE_DELAY_TEST 0 + + +//============================================================ +// +// Port setting. ( Melfas preset this value. Just use default ) +// +//============================================================ + +// Set 1 if Enabled. +#define MCSDL_USE_CE_CONTROL 0 +#define MCSDL_USE_INTR_CONTROL 1 +#define MCSDL_USE_VDD_CONTROL 1 +#define MCSDL_USE_RESETB_CONTROL 0 + + +//============================================================ +// +// Porting section 3. IO Control poting. +// +// Fill up 'I2C IO' +// Fill up 'USE_CONTROL' only on upper setting. +// +//============================================================ + +//---------------- +// VDD +//---------------- +#if MCSDL_USE_VDD_CONTROL +#define TKEY_VDD_SET_HIGH() gpio_direction_output(_3_GPIO_TOUCH_EN, 1); // +#define TKEY_VDD_SET_LOW() gpio_direction_output(_3_GPIO_TOUCH_EN, 0); // +#else +#define TKEY_VDD_SET_HIGH() // Nothing +#define TKEY_VDD_SET_LOW() // Nothing +#endif + +//---------------- +// CE +//---------------- +#if MCSDL_USE_CE_CONTROL +#define TKEY_CE_SET_HIGH() ____HERE!_____ // +#define TKEY_CE_SET_LOW() ____HERE!_____ // +#define TKEY_CE_SET_OUTPUT() ____HERE!_____ // +#else +#define TKEY_CE_SET_HIGH() // Nothing +#define TKEY_CE_SET_LOW() // Nothing +#define TKEY_CE_SET_OUTPUT() // Nothing +#endif + +//---------------- +// INTR +//---------------- +#if MCSDL_USE_INTR_CONTROL +#define TKEY_INTR_SET_HIGH() gpio_direction_output(_3_GPIO_TOUCH_INT, 1); //OT_INTR_SET_HIGH() +#define TKEY_INTR_SET_LOW() gpio_direction_output(_3_GPIO_TOUCH_INT, 0); //OT_INTR_SET_LOW() +#define TKEY_INTR_SET_OUTPUT() //s3c_gpio_cfgpin(_3_GPIO_TOUCH_INT, GPIO_OUTPUT); //OT_INTR_SET_OUTPUT() +#define TKEY_INTR_SET_INPUT() gpio_direction_input(_3_GPIO_TOUCH_INT); //OT_INTR_SET_INPUT() +#else +#define TKEY_INTR_SET_HIGH() // Nothing +#define TKEY_INTR_SET_LOW() // Nothing +#define TKEY_TINR_SET_OUTPUT() // Nothing +#define TKEY_INTR_SET_INPUT() // Nothing +#endif + +//---------------- +// RESETB +//---------------- +#if MCSDL_USE_RESETB_CONTROL +#define TKEY_RESETB_SET_HIGH() ____HERE!_____ //UHI2C_IRQ_EN(TRUE) +#define TKEY_RESETB_SET_LOW() ____HERE!_____ // +#define TKEY_RESETB_SET_OUTPUT() ____HERE!_____ // +#define TKEY_RESETB_SET_INPUT() ____HERE!_____ // +#else +#define TKEY_RESETB_SET_HIGH() // Nothing +#define TKEY_RESETB_SET_LOW() // Nothing +#define TKEY_RESETB_SET_OUTPUT() // Nothing +#define TKEY_RESETB_SET_INPUT() // Nothing +#endif + + +//------------------ +// I2C SCL & SDA +//------------------ + +#define TKEY_I2C_SCL_SET_HIGH() gpio_direction_output(_3_TOUCH_SCL_28V, 1); //OT_SCL_HIGH() +#define TKEY_I2C_SCL_SET_LOW() gpio_direction_output(_3_TOUCH_SCL_28V, 0); //OT_SCL_LOW() + +#define TKEY_I2C_SDA_SET_HIGH() gpio_direction_output(_3_TOUCH_SDA_28V, 1); //OT_SDA_HIGH() +#define TKEY_I2C_SDA_SET_LOW() gpio_direction_output(_3_TOUCH_SDA_28V, 0); //OT_SDA_LOW() + +#define TKEY_I2C_SCL_SET_OUTPUT() //s3c_gpio_cfgpin(_3_TOUCH_SCL_28V, GPIO_OUTPUT); //OT_SCL_SET_OUTPUT() +#define TKEY_I2C_SCL_SET_INPUT() gpio_direction_input(_3_TOUCH_SCL_28V); //OT_SCL_SET_INPUT() + +#define TKEY_I2C_SDA_SET_OUTPUT() //s3c_gpio_cfgpin(_3_TOUCH_SDA_28V, GPIO_OUTPUT); //OT_SDA_SET_OUTPUT() +#define TKEY_I2C_SDA_SET_INPUT() gpio_direction_input(_3_TOUCH_SDA_28V); //OT_SDA_SET_INPUT() + + +#define TKEY_I2C_SET_HIGH() TKEY_I2C_SCL_SET_HIGH(); \ + TKEY_I2C_SDA_SET_HIGH() + +#define TKEY_I2C_SET_LOW() TKEY_I2C_SCL_SET_LOW(); \ + TKEY_I2C_SDA_SET_LOW() + + +#define TKEY_I2C_SET_OUTPUT() TKEY_I2C_SCL_SET_OUTPUT(); \ + TKEY_I2C_SDA_SET_OUTPUT() + +#define TKEY_I2C_INIT() TKEY_I2C_SET_HIGH(); \ + TKEY_I2C_SET_OUTPUT() + +#define TKEY_I2C_CLOSE() TKEY_I2C_SET_LOW(); +// TKEY_I2C_SET_OUTPUT() + +//============================================================ +// +// Porting section 4-2. Delay parameter setting +// +//============================================================ +#define MCSDL_DELAY_15US 15 +#define MCSDL_DELAY_100US 100 +#define MCSDL_DELAY_150US 150 +#define MCSDL_DELAY_500US 500 +#define MCSDL_DELAY_1MS 1000 +#define MCSDL_DELAY_25MS 25000 +#define MCSDL_DELAY_45MS 45000 + + +//============================================================ +// +// Porting section 5. Defence External Effect +// +//============================================================ +#if 0 + +#define MELFAS_DISABLE_BASEBAND_ISR() ____HERE!_____ //disable_isr() +#define MELFAS_DISABLE_WATCHDOG_TIMER_RESET() ____HERE!_____ //disable_wtd_reset() + +#define MELFAS_ROLLBACK_BASEBAND_ISR() ____HERE!_____ // +#define MELFAS_ROLLBACK_WATCHDOG_TIMER_RESET() ____HERE!_____ // + +#else + +#define MELFAS_DISABLE_BASEBAND_ISR() //Nothing +#define MELFAS_DISABLE_WATCHDOG_TIMER_RESET() //Nothing + +#define MELFAS_ROLLBACK_BASEBAND_ISR() //Nothing +#define MELFAS_ROLLBACK_WATCHDOG_TIMER_RESET() //Nothing + +#endif + + +//===================================================================== +// +// MELFAS Firmware download +// +//===================================================================== + +#define MELFAS_TRANSFER_LENGTH 64 // Program & Read flash block size + + +//----------------------------------------------- +// MELFAS Version information address +//----------------------------------------------- +#define MCSDL_ADDR_MODULE_REVISION 0x98 +#define MCSDL_ADDR_FIRMWARE_VERSION 0x9C + +//---------------------------------------------------- +// Return values of download function +//---------------------------------------------------- +#define MCSDL_RET_SUCCESS 0x00 +#define MCSDL_RET_ENTER_DOWNLOAD_MODE_FAILED 0x01 +#define MCSDL_RET_ERASE_FLASH_FAILED 0x02 +#define MCSDL_RET_PREPARE_ERASE_FLASH_FAILED 0x0B +#define MCSDL_RET_ERASE_VERIFY_FAILED 0x03 +#define MCSDL_RET_READ_FLASH_FAILED 0x04 +#define MCSDL_RET_READ_EEPROM_FAILED 0x05 +#define MCSDL_RET_READ_INFORMAION_FAILED 0x06 +#define MCSDL_RET_PROGRAM_FLASH_FAILED 0x07 +#define MCSDL_RET_PROGRAM_EEPROM_FAILED 0x08 +#define MCSDL_RET_PREPARE_PROGRAM_FAILED 0x09 +#define MCSDL_RET_PROGRAM_VERIFY_FAILED 0x0A + +#define MCSDL_RET_WRONG_MODE_ERROR 0xF0 +#define MCSDL_RET_WRONG_SLAVE_SELECTION_ERROR 0xF1 +#define MCSDL_RET_WRONG_PARAMETER 0xF2 +#define MCSDL_RET_COMMUNICATION_FAILED 0xF3 +#define MCSDL_RET_READING_HEXFILE_FAILED 0xF4 +#define MCSDL_RET_FILE_ACCESS_FAILED 0xF5 +#define MCSDL_RET_MELLOC_FAILED 0xF6 +#define MCSDL_RET_WRONG_MODULE_REVISION 0xF7 + +//------------------------------ +// MDS ISP mode entering +//------------------------------ +#define MCSDL_MDS_ENTERING_ISP_MODE_CODE2 0x00 + +#define MCSDL_MDS_ENTERING_ISP_MODE_ACK_1 0x55 +#define MCSDL_MDS_ENTERING_ISP_MODE_ACK_2 0x80 + +//------------------------------ +// ISP commands - MDS & I2C +//------------------------------ +#define MCSDL_ISP_CMD_ERASE 0x02 +#define MCSDL_ISP_CMD_ERASE_TIMING 0x0F +#define MCSDL_ISP_CMD_PROGRAM_FLASH 0x03 +#define MCSDL_ISP_CMD_READ_FLASH 0x04 +#define MCSDL_ISP_CMD_PROGRAM_INFORMATION 0x05 +#define MCSDL_ISP_CMD_PROGRAM_TIMING 0x0F +#define MCSDL_ISP_CMD_READ_INFORMATION 0x06 +#define MCSDL_ISP_CMD_RESET 0x07 + +//------------------------------ +// MCS5000's responses +//------------------------------ +#define MCSDL_ISP_ACK_ERASE_DONE_2ND_MDS 0x81 +#define MCSDL_ISP_ACK_ERASE_DONE 0x82 +#define MCSDL_ISP_ACK_PREPARE_ERASE_DONE 0x8F +#define MCSDL_I2C_ACK_PREPARE_PROGRAM 0x8F +#define MCSDL_MDS_ACK_PROGRAM_FLASH 0x83 +#define MCSDL_MDS_ACK_READ_FLASH 0x84 +#define MCSDL_I2C_ACK_PROGRAM_INFORMATION 0x85 +#define MCSDL_MDS_ACK_PROGRAM_INFORMATION 0x88 +#define MCSDL_MDS_ACK_PROGRAM_LOCKED 0xFE +#define MCSDL_MDS_ACK_READ_LOCKED 0xFE +#define MCSDL_MDS_ACK_FAIL 0xFE + + +//------------------------------ +// I2C ISP +//------------------------------ +#define TOUCHKEY_ADDRESS 0x20 + +#define MCSDL_I2C_SLAVE_ADDR_ORG 0x7E // Original Address +#define MCSDL_I2C_SLAVE_ADDR_ORG_5000 0x7F // Original Address + +#define MCSDL_I2C_SLAVE_ADDR_SHIFTED (MCSDL_I2C_SLAVE_ADDR_ORG<<1) // Adress after sifting. + +#define MCSDL_I2C_SLAVE_READY_STATUS 0x55 + +#define MCSDL_ISP_PROGRAM_TIMING_VALUE_0 0x00 +#define MCSDL_ISP_PROGRAM_TIMING_VALUE_1 0x00 +#define MCSDL_ISP_PROGRAM_TIMING_VALUE_2 0x78 +#define MCSDL_ISP_PROGRAM_TIMING_VALUE_3 0x01 +#define MCSDL_ISP_PROGRAM_TIMING_VALUE_4 0xD4 +#define MCSDL_ISP_PROGRAM_TIMING_VALUE_5 0xC0 + +#define MCSDL_ISP_ERASE_TIMING_VALUE_0 0x01 +#define MCSDL_ISP_ERASE_TIMING_VALUE_1 0xD4 +#define MCSDL_ISP_ERASE_TIMING_VALUE_2 0xC0 + + +//---------------------------------------------------- +// Functions +//---------------------------------------------------- + +int mcsdl_download_binary_data(UINT8 chip_ver); // with binary type .c file. +int mcsdl_download_binary_file(UINT8 *pData, UINT16 nBinary_length); // with binary type .bin file. + +#if MELFAS_ENABLE_DELAY_TEST // For initial porting test. +void mcsdl_delay_test(INT32 nCount); +#endif + + +#endif //#ifndef __MELFAS_FIRMWARE_DOWNLOAD_H__ |