Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81c88a71 authored by Iiro Valkonen's avatar Iiro Valkonen Committed by Dmitry Torokhov
Browse files

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: default avatarIiro Valkonen <iiro.valkonen@atmel.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent c7b4a5d5
Loading
Loading
Loading
Loading
+102 −82
Original line number Original line Diff line number Diff line
@@ -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
/* MXT_GEN_COMMAND field */
#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_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);