1
0
Fork 0

Input: atmel_mxt_ts - update object list

Update the object list to include new objects, and add unique identifiers
so we can distinguish between old & new generation of the same object.

Signed-off-by: Iiro Valkonen <iiro.valkonen@atmel.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
hifive-unleashed-5.1
Iiro Valkonen 2011-07-04 03:08:25 -07:00 committed by Dmitry Torokhov
parent c7b4a5d58b
commit 81c88a711a
1 changed files with 101 additions and 81 deletions

View File

@ -48,41 +48,47 @@
#define MXT_OBJECT_SIZE 6 #define MXT_OBJECT_SIZE 6
/* Object types */ /* Object types */
#define MXT_DEBUG_DIAGNOSTIC 37 #define MXT_DEBUG_DIAGNOSTIC_T37 37
#define MXT_GEN_MESSAGE 5 #define MXT_GEN_MESSAGE_T5 5
#define MXT_GEN_COMMAND 6 #define MXT_GEN_COMMAND_T6 6
#define MXT_GEN_POWER 7 #define MXT_GEN_POWER_T7 7
#define MXT_GEN_ACQUIRE 8 #define MXT_GEN_ACQUIRE_T8 8
#define MXT_TOUCH_MULTI 9 #define MXT_GEN_DATASOURCE_T53 53
#define MXT_TOUCH_KEYARRAY 15 #define MXT_TOUCH_MULTI_T9 9
#define MXT_TOUCH_PROXIMITY 23 #define MXT_TOUCH_KEYARRAY_T15 15
#define MXT_PROCI_GRIPFACE 20 #define MXT_TOUCH_PROXIMITY_T23 23
#define MXT_PROCG_NOISE 22 #define MXT_TOUCH_PROXKEY_T52 52
#define MXT_PROCI_ONETOUCH 24 #define MXT_PROCI_GRIPFACE_T20 20
#define MXT_PROCI_TWOTOUCH 27 #define MXT_PROCG_NOISE_T22 22
#define MXT_PROCI_GRIP 40 #define MXT_PROCI_ONETOUCH_T24 24
#define MXT_PROCI_PALM 41 #define MXT_PROCI_TWOTOUCH_T27 27
#define MXT_SPT_COMMSCONFIG 18 #define MXT_PROCI_GRIP_T40 40
#define MXT_SPT_GPIOPWM 19 #define MXT_PROCI_PALM_T41 41
#define MXT_SPT_SELFTEST 25 #define MXT_PROCI_TOUCHSUPPRESSION_T42 42
#define MXT_SPT_CTECONFIG 28 #define MXT_PROCI_STYLUS_T47 47
#define MXT_SPT_USERDATA 38 #define MXT_PROCG_NOISESUPPRESSION_T48 48
#define MXT_SPT_DIGITIZER 43 #define MXT_SPT_COMMSCONFIG_T18 18
#define MXT_SPT_MESSAGECOUNT 44 #define MXT_SPT_GPIOPWM_T19 19
#define MXT_SPT_SELFTEST_T25 25
#define MXT_SPT_CTECONFIG_T28 28
#define MXT_SPT_USERDATA_T38 38
#define MXT_SPT_DIGITIZER_T43 43
#define MXT_SPT_MESSAGECOUNT_T44 44
#define MXT_SPT_CTECONFIG_T46 46
/* MXT_GEN_COMMAND field */ /* MXT_GEN_COMMAND_T6 field */
#define MXT_COMMAND_RESET 0 #define MXT_COMMAND_RESET 0
#define MXT_COMMAND_BACKUPNV 1 #define MXT_COMMAND_BACKUPNV 1
#define MXT_COMMAND_CALIBRATE 2 #define MXT_COMMAND_CALIBRATE 2
#define MXT_COMMAND_REPORTALL 3 #define MXT_COMMAND_REPORTALL 3
#define MXT_COMMAND_DIAGNOSTIC 5 #define MXT_COMMAND_DIAGNOSTIC 5
/* MXT_GEN_POWER field */ /* MXT_GEN_POWER_T7 field */
#define MXT_POWER_IDLEACQINT 0 #define MXT_POWER_IDLEACQINT 0
#define MXT_POWER_ACTVACQINT 1 #define MXT_POWER_ACTVACQINT 1
#define MXT_POWER_ACTV2IDLETO 2 #define MXT_POWER_ACTV2IDLETO 2
/* MXT_GEN_ACQUIRE field */ /* MXT_GEN_ACQUIRE_T8 field */
#define MXT_ACQUIRE_CHRGTIME 0 #define MXT_ACQUIRE_CHRGTIME 0
#define MXT_ACQUIRE_TCHDRIFT 2 #define MXT_ACQUIRE_TCHDRIFT 2
#define MXT_ACQUIRE_DRIFTST 3 #define MXT_ACQUIRE_DRIFTST 3
@ -91,7 +97,7 @@
#define MXT_ACQUIRE_ATCHCALST 6 #define MXT_ACQUIRE_ATCHCALST 6
#define MXT_ACQUIRE_ATCHCALSTHR 7 #define MXT_ACQUIRE_ATCHCALSTHR 7
/* MXT_TOUCH_MULTI field */ /* MXT_TOUCH_MULTI_T9 field */
#define MXT_TOUCH_CTRL 0 #define MXT_TOUCH_CTRL 0
#define MXT_TOUCH_XORIGIN 1 #define MXT_TOUCH_XORIGIN 1
#define MXT_TOUCH_YORIGIN 2 #define MXT_TOUCH_YORIGIN 2
@ -121,7 +127,7 @@
#define MXT_TOUCH_YEDGEDIST 29 #define MXT_TOUCH_YEDGEDIST 29
#define MXT_TOUCH_JUMPLIMIT 30 #define MXT_TOUCH_JUMPLIMIT 30
/* MXT_PROCI_GRIPFACE field */ /* MXT_PROCI_GRIPFACE_T20 field */
#define MXT_GRIPFACE_CTRL 0 #define MXT_GRIPFACE_CTRL 0
#define MXT_GRIPFACE_XLOGRIP 1 #define MXT_GRIPFACE_XLOGRIP 1
#define MXT_GRIPFACE_XHIGRIP 2 #define MXT_GRIPFACE_XHIGRIP 2
@ -151,11 +157,11 @@
#define MXT_NOISE_FREQ4 15 #define MXT_NOISE_FREQ4 15
#define MXT_NOISE_IDLEGCAFVALID 16 #define MXT_NOISE_IDLEGCAFVALID 16
/* MXT_SPT_COMMSCONFIG */ /* MXT_SPT_COMMSCONFIG_T18 */
#define MXT_COMMS_CTRL 0 #define MXT_COMMS_CTRL 0
#define MXT_COMMS_CMD 1 #define MXT_COMMS_CMD 1
/* MXT_SPT_CTECONFIG field */ /* MXT_SPT_CTECONFIG_T28 field */
#define MXT_CTE_CTRL 0 #define MXT_CTE_CTRL 0
#define MXT_CTE_CMD 1 #define MXT_CTE_CMD 1
#define MXT_CTE_MODE 2 #define MXT_CTE_MODE 2
@ -166,7 +172,7 @@
#define MXT_VOLTAGE_DEFAULT 2700000 #define MXT_VOLTAGE_DEFAULT 2700000
#define MXT_VOLTAGE_STEP 10000 #define MXT_VOLTAGE_STEP 10000
/* Define for MXT_GEN_COMMAND */ /* Define for MXT_GEN_COMMAND_T6 */
#define MXT_BOOT_VALUE 0xa5 #define MXT_BOOT_VALUE 0xa5
#define MXT_BACKUP_VALUE 0x55 #define MXT_BACKUP_VALUE 0x55
#define MXT_BACKUP_TIME 25 /* msec */ #define MXT_BACKUP_TIME 25 /* msec */
@ -256,24 +262,31 @@ struct mxt_data {
static bool mxt_object_readable(unsigned int type) static bool mxt_object_readable(unsigned int type)
{ {
switch (type) { switch (type) {
case MXT_GEN_MESSAGE: case MXT_GEN_MESSAGE_T5:
case MXT_GEN_COMMAND: case MXT_GEN_COMMAND_T6:
case MXT_GEN_POWER: case MXT_GEN_POWER_T7:
case MXT_GEN_ACQUIRE: case MXT_GEN_ACQUIRE_T8:
case MXT_TOUCH_MULTI: case MXT_GEN_DATASOURCE_T53:
case MXT_TOUCH_KEYARRAY: case MXT_TOUCH_MULTI_T9:
case MXT_TOUCH_PROXIMITY: case MXT_TOUCH_KEYARRAY_T15:
case MXT_PROCI_GRIPFACE: case MXT_TOUCH_PROXIMITY_T23:
case MXT_PROCG_NOISE: case MXT_TOUCH_PROXKEY_T52:
case MXT_PROCI_ONETOUCH: case MXT_PROCI_GRIPFACE_T20:
case MXT_PROCI_TWOTOUCH: case MXT_PROCG_NOISE_T22:
case MXT_PROCI_GRIP: case MXT_PROCI_ONETOUCH_T24:
case MXT_PROCI_PALM: case MXT_PROCI_TWOTOUCH_T27:
case MXT_SPT_COMMSCONFIG: case MXT_PROCI_GRIP_T40:
case MXT_SPT_GPIOPWM: case MXT_PROCI_PALM_T41:
case MXT_SPT_SELFTEST: case MXT_PROCI_TOUCHSUPPRESSION_T42:
case MXT_SPT_CTECONFIG: case MXT_PROCI_STYLUS_T47:
case MXT_SPT_USERDATA: case MXT_PROCG_NOISESUPPRESSION_T48:
case MXT_SPT_COMMSCONFIG_T18:
case MXT_SPT_GPIOPWM_T19:
case MXT_SPT_SELFTEST_T25:
case MXT_SPT_CTECONFIG_T28:
case MXT_SPT_USERDATA_T38:
case MXT_SPT_DIGITIZER_T43:
case MXT_SPT_CTECONFIG_T46:
return true; return true;
default: default:
return false; return false;
@ -283,21 +296,28 @@ static bool mxt_object_readable(unsigned int type)
static bool mxt_object_writable(unsigned int type) static bool mxt_object_writable(unsigned int type)
{ {
switch (type) { switch (type) {
case MXT_GEN_COMMAND: case MXT_GEN_COMMAND_T6:
case MXT_GEN_POWER: case MXT_GEN_POWER_T7:
case MXT_GEN_ACQUIRE: case MXT_GEN_ACQUIRE_T8:
case MXT_TOUCH_MULTI: case MXT_TOUCH_MULTI_T9:
case MXT_TOUCH_KEYARRAY: case MXT_TOUCH_KEYARRAY_T15:
case MXT_TOUCH_PROXIMITY: case MXT_TOUCH_PROXIMITY_T23:
case MXT_PROCI_GRIPFACE: case MXT_TOUCH_PROXKEY_T52:
case MXT_PROCG_NOISE: case MXT_PROCI_GRIPFACE_T20:
case MXT_PROCI_ONETOUCH: case MXT_PROCG_NOISE_T22:
case MXT_PROCI_TWOTOUCH: case MXT_PROCI_ONETOUCH_T24:
case MXT_PROCI_GRIP: case MXT_PROCI_TWOTOUCH_T27:
case MXT_PROCI_PALM: case MXT_PROCI_GRIP_T40:
case MXT_SPT_GPIOPWM: case MXT_PROCI_PALM_T41:
case MXT_SPT_SELFTEST: case MXT_PROCI_TOUCHSUPPRESSION_T42:
case MXT_SPT_CTECONFIG: case MXT_PROCI_STYLUS_T47:
case MXT_PROCG_NOISESUPPRESSION_T48:
case MXT_SPT_COMMSCONFIG_T18:
case MXT_SPT_GPIOPWM_T19:
case MXT_SPT_SELFTEST_T25:
case MXT_SPT_CTECONFIG_T28:
case MXT_SPT_DIGITIZER_T43:
case MXT_SPT_CTECONFIG_T46:
return true; return true;
default: default:
return false; return false;
@ -455,7 +475,7 @@ static int mxt_read_message(struct mxt_data *data,
struct mxt_object *object; struct mxt_object *object;
u16 reg; u16 reg;
object = mxt_get_object(data, MXT_GEN_MESSAGE); object = mxt_get_object(data, MXT_GEN_MESSAGE_T5);
if (!object) if (!object)
return -EINVAL; return -EINVAL;
@ -597,8 +617,8 @@ static irqreturn_t mxt_interrupt(int irq, void *dev_id)
reportid = message.reportid; reportid = message.reportid;
/* whether reportid is thing of MXT_TOUCH_MULTI */ /* whether reportid is thing of MXT_TOUCH_MULTI_T9 */
object = mxt_get_object(data, MXT_TOUCH_MULTI); object = mxt_get_object(data, MXT_TOUCH_MULTI_T9);
if (!object) if (!object)
goto end; goto end;
@ -678,31 +698,31 @@ static void mxt_handle_pdata(struct mxt_data *data)
u8 voltage; u8 voltage;
/* Set touchscreen lines */ /* Set touchscreen lines */
mxt_write_object(data, MXT_TOUCH_MULTI, MXT_TOUCH_XSIZE, mxt_write_object(data, MXT_TOUCH_MULTI_T9, MXT_TOUCH_XSIZE,
pdata->x_line); pdata->x_line);
mxt_write_object(data, MXT_TOUCH_MULTI, MXT_TOUCH_YSIZE, mxt_write_object(data, MXT_TOUCH_MULTI_T9, MXT_TOUCH_YSIZE,
pdata->y_line); pdata->y_line);
/* Set touchscreen orient */ /* Set touchscreen orient */
mxt_write_object(data, MXT_TOUCH_MULTI, MXT_TOUCH_ORIENT, mxt_write_object(data, MXT_TOUCH_MULTI_T9, MXT_TOUCH_ORIENT,
pdata->orient); pdata->orient);
/* Set touchscreen burst length */ /* Set touchscreen burst length */
mxt_write_object(data, MXT_TOUCH_MULTI, mxt_write_object(data, MXT_TOUCH_MULTI_T9,
MXT_TOUCH_BLEN, pdata->blen); MXT_TOUCH_BLEN, pdata->blen);
/* Set touchscreen threshold */ /* Set touchscreen threshold */
mxt_write_object(data, MXT_TOUCH_MULTI, mxt_write_object(data, MXT_TOUCH_MULTI_T9,
MXT_TOUCH_TCHTHR, pdata->threshold); MXT_TOUCH_TCHTHR, pdata->threshold);
/* Set touchscreen resolution */ /* Set touchscreen resolution */
mxt_write_object(data, MXT_TOUCH_MULTI, mxt_write_object(data, MXT_TOUCH_MULTI_T9,
MXT_TOUCH_XRANGE_LSB, (pdata->x_size - 1) & 0xff); MXT_TOUCH_XRANGE_LSB, (pdata->x_size - 1) & 0xff);
mxt_write_object(data, MXT_TOUCH_MULTI, mxt_write_object(data, MXT_TOUCH_MULTI_T9,
MXT_TOUCH_XRANGE_MSB, (pdata->x_size - 1) >> 8); MXT_TOUCH_XRANGE_MSB, (pdata->x_size - 1) >> 8);
mxt_write_object(data, MXT_TOUCH_MULTI, mxt_write_object(data, MXT_TOUCH_MULTI_T9,
MXT_TOUCH_YRANGE_LSB, (pdata->y_size - 1) & 0xff); MXT_TOUCH_YRANGE_LSB, (pdata->y_size - 1) & 0xff);
mxt_write_object(data, MXT_TOUCH_MULTI, mxt_write_object(data, MXT_TOUCH_MULTI_T9,
MXT_TOUCH_YRANGE_MSB, (pdata->y_size - 1) >> 8); MXT_TOUCH_YRANGE_MSB, (pdata->y_size - 1) >> 8);
/* Set touchscreen voltage */ /* Set touchscreen voltage */
@ -715,7 +735,7 @@ static void mxt_handle_pdata(struct mxt_data *data)
voltage = (pdata->voltage - MXT_VOLTAGE_DEFAULT) / voltage = (pdata->voltage - MXT_VOLTAGE_DEFAULT) /
MXT_VOLTAGE_STEP; MXT_VOLTAGE_STEP;
mxt_write_object(data, MXT_SPT_CTECONFIG, mxt_write_object(data, MXT_SPT_CTECONFIG_T28,
MXT_CTE_VOLTAGE, voltage); MXT_CTE_VOLTAGE, voltage);
} }
} }
@ -819,13 +839,13 @@ static int mxt_initialize(struct mxt_data *data)
mxt_handle_pdata(data); mxt_handle_pdata(data);
/* Backup to memory */ /* Backup to memory */
mxt_write_object(data, MXT_GEN_COMMAND, mxt_write_object(data, MXT_GEN_COMMAND_T6,
MXT_COMMAND_BACKUPNV, MXT_COMMAND_BACKUPNV,
MXT_BACKUP_VALUE); MXT_BACKUP_VALUE);
msleep(MXT_BACKUP_TIME); msleep(MXT_BACKUP_TIME);
/* Soft reset */ /* Soft reset */
mxt_write_object(data, MXT_GEN_COMMAND, mxt_write_object(data, MXT_GEN_COMMAND_T6,
MXT_COMMAND_RESET, 1); MXT_COMMAND_RESET, 1);
msleep(MXT_RESET_TIME); msleep(MXT_RESET_TIME);
@ -921,7 +941,7 @@ static int mxt_load_fw(struct device *dev, const char *fn)
} }
/* Change to the bootloader mode */ /* Change to the bootloader mode */
mxt_write_object(data, MXT_GEN_COMMAND, mxt_write_object(data, MXT_GEN_COMMAND_T6,
MXT_COMMAND_RESET, MXT_BOOT_VALUE); MXT_COMMAND_RESET, MXT_BOOT_VALUE);
msleep(MXT_RESET_TIME); msleep(MXT_RESET_TIME);
@ -1027,14 +1047,14 @@ static void mxt_start(struct mxt_data *data)
{ {
/* Touch enable */ /* Touch enable */
mxt_write_object(data, mxt_write_object(data,
MXT_TOUCH_MULTI, MXT_TOUCH_CTRL, 0x83); MXT_TOUCH_MULTI_T9, MXT_TOUCH_CTRL, 0x83);
} }
static void mxt_stop(struct mxt_data *data) static void mxt_stop(struct mxt_data *data)
{ {
/* Touch disable */ /* Touch disable */
mxt_write_object(data, mxt_write_object(data,
MXT_TOUCH_MULTI, MXT_TOUCH_CTRL, 0); MXT_TOUCH_MULTI_T9, MXT_TOUCH_CTRL, 0);
} }
static int mxt_input_open(struct input_dev *dev) static int mxt_input_open(struct input_dev *dev)
@ -1182,7 +1202,7 @@ static int mxt_resume(struct device *dev)
struct input_dev *input_dev = data->input_dev; struct input_dev *input_dev = data->input_dev;
/* Soft reset */ /* Soft reset */
mxt_write_object(data, MXT_GEN_COMMAND, mxt_write_object(data, MXT_GEN_COMMAND_T6,
MXT_COMMAND_RESET, 1); MXT_COMMAND_RESET, 1);
msleep(MXT_RESET_TIME); msleep(MXT_RESET_TIME);