2 * drivers/input/touchscreen/sitronix_i2c_touch.h
4 * Touchscreen driver for Sitronix
6 * Copyright (C) 2011 Sitronix Technology Co., Ltd.
7 * Rudy Huang <rudy_huang@sitronix.com.tw>
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the Free
12 * Software Foundation; either version 2 of the License, or (at your option)
16 #ifndef __SITRONIX_I2C_TOUCH_h
17 #define __SITRONIX_I2C_TOUCH_h
19 #include <linux/ioctl.h> /* needed for the _IOW etc stuff used later */
21 #define SITRONIX_TOUCH_DRIVER_VERSION 0x03
22 #define SITRONIX_MAX_SUPPORTED_POINT 5
23 #define SITRONIX_I2C_TOUCH_DRV_NAME "sitronix"
24 #define SITRONIX_I2C_TOUCH_DEV_NAME "sitronixDev"
26 //#define SITRONIX_WAKE_UP_TOUCH_BY_INT
28 //#define SITRONIX_MONITOR_THREAD
29 #define DELAY_MONITOR_THREAD_START_PROBE 10000
30 #define DELAY_MONITOR_THREAD_START_RESUME 3000
31 #define SITRONIX_FW_UPGRADE_FEATURE
32 #define SITRONIX_LEVEL_TRIGGERED
33 // When enable_irq() is invoked, irq will be sent once while INT is not triggered if CONFIG_HARDIRQS_SW_RESEND is set.
34 // This behavior is implemented by linux kernel, it is used to prevent irq from losting when irq is edge-triggered mode.
35 #ifndef SITRONIX_LEVEL_TRIGGERED
36 #define SITRONIX_INT_POLLING_MODE
37 #define INT_POLLING_MODE_INTERVAL 14
38 #endif // SITRONIX_LEVEL_TRIGGERED
39 #define SITRONIX_FINGER_COUNT_REG_ENABLE
41 //#define EnableDbgMsg 0
42 //#define EnableUpgradeMsg 1
45 #define DbgMsg(arg...) printk(arg)
47 #define DbgMsg(arg...)
50 #ifdef EnableUpgradeMsg
51 #define UpgradeMsg(arg...) printk(arg)
53 #define UpgradeMsg(arg...)
64 FIRMWARE_REVISION_3 = 0x0C,
81 #define SITRONIX_TS_CHANGE_MODE_DELAY 150
91 #define X_RES_H_SHFT 4
92 #define X_RES_H_BMSK 0xf
93 #define Y_RES_H_SHFT 0
94 #define Y_RES_H_BMSK 0xf
95 #define FINGERS_SHFT 0
96 #define FINGERS_BMSK 0xf
97 #define X_COORD_VALID_SHFT 7
98 #define X_COORD_VALID_BMSK 0x1
99 #define X_COORD_H_SHFT 4
100 #define X_COORD_H_BMSK 0x7
101 #define Y_COORD_H_SHFT 0
102 #define Y_COORD_H_BMSK 0x7
109 #define I2C_PROTOCOL_SHFT 0x0
110 #define I2C_PROTOCOL_BMSK 0x3
112 #define SMT_IOC_MAGIC 0xf1
115 SMT_GET_DRIVER_REVISION = 1,
125 #define IOCTL_SMT_GET_DRIVER_REVISION _IOC(_IOC_READ, SMT_IOC_MAGIC, SMT_GET_DRIVER_REVISION, 1)
126 #define IOCTL_SMT_GET_FW_REVISION _IOC(_IOC_READ, SMT_IOC_MAGIC, SMT_GET_FW_REVISION, 4)
127 #define IOCTL_SMT_ENABLE_IRQ _IOC(_IOC_NONE, SMT_IOC_MAGIC, SMT_ENABLE_IRQ, 0)
128 #define IOCTL_SMT_DISABLE_IRQ _IOC(_IOC_NONE, SMT_IOC_MAGIC, SMT_DISABLE_IRQ, 0)
129 #define IOCTL_SMT_RESUME _IOC(_IOC_NONE, SMT_IOC_MAGIC, SMT_RESUME, 0)
130 #define IOCTL_SMT_SUSPEND _IOC(_IOC_NONE, SMT_IOC_MAGIC, SMT_SUSPEND, 0)
131 #define IOCTL_SMT_HW_RESET _IOC(_IOC_NONE, SMT_IOC_MAGIC, SMT_HW_RESET, 0)
133 #define SITRONIX_SENSOR_KEY
134 //#define SITRONIX_TOUCH_KEY
135 //#define SITRONIX_KEY_BOUNDARY_MANUAL_SPECIFY
137 typedef struct _tag_MTD_STRUCTURE{
140 u8 First_Pressed_area; /* 0: no press; 1: display; 2: touch key */
141 u8 Current_Pressed_area; /* 0: no press; 1: display; 2: touch key */
142 unsigned int First_key_index;
143 unsigned int Current_key_index;
144 }MTD_STRUCTURE, *PMTD_STRUCTURE;
146 #ifndef SITRONIX_TOUCH_KEY
159 struct sitronix_AA_key{
166 #endif // SITRONIX_TOUCH_KEY
168 struct sitronix_i2c_touch_platform_data {
169 uint32_t version; /* Use this entry for panels with */
170 /* (major << 8 | minor) version or above. */
171 /* If non-zero another array entry follows */
172 void (*reset_ic)(void);
175 #endif // __SITRONIX_I2C_TOUCH_h