diff options
Diffstat (limited to 'drivers/input/touchscreen/ist30xxc/ist30xxc_update.h')
| -rw-r--r-- | drivers/input/touchscreen/ist30xxc/ist30xxc_update.h | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/ist30xxc/ist30xxc_update.h b/drivers/input/touchscreen/ist30xxc/ist30xxc_update.h new file mode 100644 index 00000000..142106f9 --- /dev/null +++ b/drivers/input/touchscreen/ist30xxc/ist30xxc_update.h @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2010, Imagis Technology Co. Ltd. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef __IST30XXC_UPDATE_H__ +#define __IST30XXC_UPDATE_H__ + +// Flash size +#define IST30XX_FLASH_BASE_ADDR (0x0) +#if (IMAGIS_TSP_IC < IMAGIS_IST3038C) +#define IST30XX_FLASH_MAIN_SIZE (0x8000) +#define IST30XX_FLASH_INFO_SIZE (0x400) +#define IST30XX_FLASH_TOTAL_SIZE (0x8400) +#else +#define IST30XX_FLASH_MAIN_SIZE (0xFC00) +#define IST30XX_FLASH_INFO_SIZE (0x0) +#define IST30XX_FLASH_TOTAL_SIZE (0xFC00) +#endif +#define IST30XX_FLASH_PAGE_SIZE (0x400) + +// Flash register +#define IST30XX_FLASH_BASE (0x40006000) +#define IST30XX_FLASH_MODE IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x00) +#define IST30XX_FLASH_ADDR IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x04) +#define IST30XX_FLASH_DIN IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x08) +#define IST30XX_FLASH_DOUT IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x0C) +#define IST30XX_FLASH_ISPEN IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x10) +#define IST30XX_FLASH_AUTO_READ IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x14) +#define IST30XX_FLASH_CRC IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x18) +#define IST30XX_FLASH_TEST_MODE1 IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x30) +#define IST30XX_FLASH_STATUS IST30XX_DA_ADDR(IST30XX_FLASH_BASE | 0x90) + +// F/W update Info +#define IST30XX_FW_NAME "ist30xxc.fw" +#define IST30XX_BIN_NAME "ist30xxc.bin" + +// Calibration +#define CALIB_WAIT_TIME (50) /* unit : 100msec */ +#define CALIB_TO_GAP(n) ((n >> 16) & 0xFFF) +#define CALIB_TO_STATUS(n) ((n >> 12) & 0xF) +#define CALIB_TO_OS_VALUE(n) ((n >> 12) & 0xFFFF) + +// Update func +#define MASK_UPDATE_INTERNAL (1) +#define MASK_UPDATE_FW (2) +#define MASK_UPDATE_SDCARD (3) +#define MASK_UPDATE_ERASE (4) + +// Version flag +#define FLAG_MAIN (1) +#define FLAG_FW (2) +#define FLAG_CORE (3) +#define FLAG_TEST (4) + +// TSP vendor (using gpio) +#define TSP_TYPE_UNKNOWN (0xF0) +#define TSP_TYPE_ALPS (0xF) +#define TSP_TYPE_EELY (0xE) +#define TSP_TYPE_TOP (0xD) +#define TSP_TYPE_MELFAS (0xC) +#define TSP_TYPE_ILJIN (0xB) +#define TSP_TYPE_SYNOPEX (0xA) +#define TSP_TYPE_SMAC (0x9) +#define TSP_TYPE_TAEYANG (0x8) +#define TSP_TYPE_TOVIS (0x7) +#define TSP_TYPE_ELK (0x6) +#define TSP_TYPE_OTHERS (0x5) +#define TSP_TYPE_NO (0x10) + +#define IST30XX_PARSE_TSPTYPE(n) ((n >> 1) & 0xF) + +int ist30xx_read_chksum(struct i2c_client *client, u32 *chksum); +int ist30xx_read_chksum_all(struct i2c_client *client, u32 *chksum); + +int ist30xx_get_update_info(struct ist30xx_data *data, const u8 *buf, + const u32 size); +int ist30xx_get_tsp_info(struct ist30xx_data *data); +void ist30xx_print_info(struct ist30xx_data *data); +u32 ist30xx_parse_ver(struct ist30xx_data *data, int flag, const u8 *buf); + +int ist30xx_fw_update(struct ist30xx_data *data, const u8 *buf, int size); +int ist30xx_fw_recovery(struct ist30xx_data *data); + +int ist30xx_auto_bin_update(struct ist30xx_data *data); + +int ist30xx_calibrate(struct ist30xx_data *data, int wait_cnt); + +int ist30xx_init_update_sysfs(struct ist30xx_data *data); + +#endif // __IST30XXC_UPDATE_H__ |
