summaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/ist30xxc/ist30xxc_update.h
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
committerYuval Adam <_@yuv.al>2017-08-30 08:25:59 +0000
commit8e4bff4cab0ddac6060645b0715210484d02ff40 (patch)
tree3a5c3024371a04692a3a6d9974d001cdff8ebf84 /drivers/input/touchscreen/ist30xxc/ist30xxc_update.h
Initial file dump from open source releaseHEADmaster
Diffstat (limited to 'drivers/input/touchscreen/ist30xxc/ist30xxc_update.h')
-rw-r--r--drivers/input/touchscreen/ist30xxc/ist30xxc_update.h101
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__