linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller.
@ 2021-10-03 21:54 Gareth Randall
  2021-10-15  9:04 ` Gareth Randall
  2021-11-08  5:56 ` Dmitry Torokhov
  0 siblings, 2 replies; 4+ messages in thread
From: Gareth Randall @ 2021-10-03 21:54 UTC (permalink / raw)
  To: linux-input

Add support for touch screens using the General Touch ST6001S
controller, as found in the GPEG model AOD22WZ-ST monitor.
This controller can output the ELO 10-byte protocol,
but requires different initialisation.

Signed-off-by: Gareth Randall <gareth@garethrandall.com>
---
  drivers/input/touchscreen/elo.c | 58 +++++++++++++++++++++++++++++++++
  1 file changed, 58 insertions(+)

diff --git a/drivers/input/touchscreen/elo.c 
b/drivers/input/touchscreen/elo.c
index 96173232e53f..8c15e0eea6b4 100644
--- a/drivers/input/touchscreen/elo.c
+++ b/drivers/input/touchscreen/elo.c
@@ -44,6 +44,8 @@ MODULE_LICENSE("GPL");
  #define ELO10_ACK_PACKET	'A'
  #define ELI10_ID_PACKET		'I'

+#define ELO_GT_INIT_PACKET	"\001XfE\r"
+
  /*
   * Per-touchscreen data.
   */
@@ -201,6 +203,7 @@ static irqreturn_t elo_interrupt(struct serio *serio,

  	switch (elo->id) {
  	case 0:
+	case 4:
  		elo_process_data_10(elo, data);
  		break;

@@ -255,6 +258,54 @@ static int elo_command_10(struct elo *elo, unsigned 
char *packet)
  	return rc;
  }

+/*
+ * Initialise the General Touch ST6001S controller.
+ */
+static int elo_command_10_gt(struct elo *elo)
+{
+	int rc = -1;
+	int i;
+	unsigned char *packet = ELO_GT_INIT_PACKET;
+
+	mutex_lock(&elo->cmd_mutex);
+
+	serio_pause_rx(elo->serio);
+	init_completion(&elo->cmd_done);
+	serio_continue_rx(elo->serio);
+
+	for (i = 0; i < (int)strlen(packet); i++) {
+		if (serio_write(elo->serio, packet[i]))
+			goto out;
+	}
+
+	wait_for_completion_timeout(&elo->cmd_done, HZ);
+	rc = 0;
+
+ out:
+	mutex_unlock(&elo->cmd_mutex);
+	return rc;
+}
+
+static int elo_setup_10_gt(struct elo *elo)
+{
+	struct input_dev *dev = elo->dev;
+
+	if (elo_command_10_gt(elo))
+		return -1;
+
+	__set_bit(INPUT_PROP_DIRECT, dev->propbit);
+
+	// Values taken from a GPEG model AOD22WZ-ST monitor
+	input_set_abs_params(dev, ABS_X, 1365, 5828, 0, 0);
+	// max and min inverted because screen axis is inverted
+	input_set_abs_params(dev, ABS_Y, 5013, 2260, 0, 0);
+
+	dev_info(&elo->serio->dev,
+		 "GeneralTouch ST6001S touchscreen");
+
+	return 0;
+}
+
  static int elo_setup_10(struct elo *elo)
  {
  	static const char *elo_types[] = { "Accu", "Dura", "Intelli", 
"Carroll" };
@@ -361,6 +412,13 @@ static int elo_connect(struct serio *serio, struct 
serio_driver *drv)
  		input_set_abs_params(input_dev, ABS_X, 0, 255, 0, 0);
  		input_set_abs_params(input_dev, ABS_Y, 0, 255, 0, 0);
  		break;
+
+	case 4: /* 10-byte protocol with General Touch initialisation */
+		if (elo_setup_10_gt(elo)) {
+			err = -EIO;
+			goto fail3;
+		}
+		break;
  	}

  	err = input_register_device(elo->dev);
-- 
2.27.0

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller.
  2021-10-03 21:54 [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller Gareth Randall
@ 2021-10-15  9:04 ` Gareth Randall
  2021-11-07 13:55   ` Gareth Randall
  2021-11-08  5:56 ` Dmitry Torokhov
  1 sibling, 1 reply; 4+ messages in thread
From: Gareth Randall @ 2021-10-15  9:04 UTC (permalink / raw)
  To: linux-input

On 03/10/2021 22:54, Gareth Randall wrote:
> Add support for touch screens using the General Touch ST6001S
> controller, as found in the GPEG model AOD22WZ-ST monitor.
> This controller can output the ELO 10-byte protocol,
> but requires different initialisation.
> 
> Signed-off-by: Gareth Randall <gareth@garethrandall.com>
> ---
>   drivers/input/touchscreen/elo.c | 58 +++++++++++++++++++++++++++++++++
>   1 file changed, 58 insertions(+)

Hi,

I'm seeking feedback on this patch. I just wondered whether I have made 
any mistakes in the submission, or whether the maintainers are just very 
busy (most likely explanation!)

I know that this does not appear properly in patchwork even though I 
have attempted to recreate the exact format of a [PATCH] email, but I 
don't want to send duplicate attempts. I've checked that there are no 
wrapped lines in the email message. Is there a test suite that is 
failing that I'm not aware of, or conventions I'm not following?

Thanks for any feedback.

Yours,

Gareth

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller.
  2021-10-15  9:04 ` Gareth Randall
@ 2021-11-07 13:55   ` Gareth Randall
  0 siblings, 0 replies; 4+ messages in thread
From: Gareth Randall @ 2021-11-07 13:55 UTC (permalink / raw)
  To: dmitry.torokhov, linux-input

Dear Dmitry,

I wonder if you have had a chance to look at this patch. It was 
originally sent on 26 Sep 2021, then resent on 3 Oct 2021 to try to make 
it come out in Patchwork properly. This is my first patch submission so 
any feedback on both the patch and whether I'm following the process 
properly would be very useful. Thanks very much.

Yours,

Gareth

On 15/10/2021 10:04, Gareth Randall wrote:
> On 03/10/2021 22:54, Gareth Randall wrote:
>> Add support for touch screens using the General Touch ST6001S
>> controller, as found in the GPEG model AOD22WZ-ST monitor.
>> This controller can output the ELO 10-byte protocol,
>> but requires different initialisation.
>>
>> Signed-off-by: Gareth Randall <gareth@garethrandall.com>
>> ---
>>   drivers/input/touchscreen/elo.c | 58 +++++++++++++++++++++++++++++++++
>>   1 file changed, 58 insertions(+)
> 
> Hi,
> 
> I'm seeking feedback on this patch. I just wondered whether I have made 
> any mistakes in the submission, or whether the maintainers are just very 
> busy (most likely explanation!)
> 
> I know that this does not appear properly in patchwork even though I 
> have attempted to recreate the exact format of a [PATCH] email, but I 
> don't want to send duplicate attempts. I've checked that there are no 
> wrapped lines in the email message. Is there a test suite that is 
> failing that I'm not aware of, or conventions I'm not following?
> 
> Thanks for any feedback.
> 
> Yours,
> 
> Gareth


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller.
  2021-10-03 21:54 [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller Gareth Randall
  2021-10-15  9:04 ` Gareth Randall
@ 2021-11-08  5:56 ` Dmitry Torokhov
  1 sibling, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2021-11-08  5:56 UTC (permalink / raw)
  To: Gareth Randall; +Cc: linux-input

Hi Gareth,

On Sun, Oct 03, 2021 at 10:54:21PM +0100, Gareth Randall wrote:
> Add support for touch screens using the General Touch ST6001S
> controller, as found in the GPEG model AOD22WZ-ST monitor.
> This controller can output the ELO 10-byte protocol,
> but requires different initialisation.
> 
> Signed-off-by: Gareth Randall <gareth@garethrandall.com>
> ---
>  drivers/input/touchscreen/elo.c | 58 +++++++++++++++++++++++++++++++++
>  1 file changed, 58 insertions(+)
> 
> diff --git a/drivers/input/touchscreen/elo.c
> b/drivers/input/touchscreen/elo.c
> index 96173232e53f..8c15e0eea6b4 100644
> --- a/drivers/input/touchscreen/elo.c
> +++ b/drivers/input/touchscreen/elo.c
> @@ -44,6 +44,8 @@ MODULE_LICENSE("GPL");
>  #define ELO10_ACK_PACKET	'A'
>  #define ELI10_ID_PACKET		'I'
> 
> +#define ELO_GT_INIT_PACKET	"\001XfE\r"
> +
>  /*
>   * Per-touchscreen data.
>   */
> @@ -201,6 +203,7 @@ static irqreturn_t elo_interrupt(struct serio *serio,
> 
>  	switch (elo->id) {
>  	case 0:
> +	case 4:
>  		elo_process_data_10(elo, data);
>  		break;
> 
> @@ -255,6 +258,54 @@ static int elo_command_10(struct elo *elo, unsigned
> char *packet)
>  	return rc;
>  }
> 
> +/*
> + * Initialise the General Touch ST6001S controller.
> + */
> +static int elo_command_10_gt(struct elo *elo)
> +{
> +	int rc = -1;
> +	int i;
> +	unsigned char *packet = ELO_GT_INIT_PACKET;
> +
> +	mutex_lock(&elo->cmd_mutex);
> +
> +	serio_pause_rx(elo->serio);
> +	init_completion(&elo->cmd_done);
> +	serio_continue_rx(elo->serio);
> +
> +	for (i = 0; i < (int)strlen(packet); i++) {
> +		if (serio_write(elo->serio, packet[i]))
> +			goto out;
> +	}
> +
> +	wait_for_completion_timeout(&elo->cmd_done, HZ);
> +	rc = 0;
> +
> + out:
> +	mutex_unlock(&elo->cmd_mutex);
> +	return rc;
> +}
> +
> +static int elo_setup_10_gt(struct elo *elo)
> +{
> +	struct input_dev *dev = elo->dev;
> +
> +	if (elo_command_10_gt(elo))
> +		return -1;

		return -EIO;

> +
> +	__set_bit(INPUT_PROP_DIRECT, dev->propbit);

Please make this a separate patch that would set this property for all
variants of ELO touchscreens (i.e. move it into elo_connect()).

> +
> +	// Values taken from a GPEG model AOD22WZ-ST monitor
> +	input_set_abs_params(dev, ABS_X, 1365, 5828, 0, 0);

I believe the datasheet says that the touch resolution is 4096 x 4096:
http://www.boardcon.com/download/LCD_datasheet/15inch_SAW_LCD/Serial%20Controller%20ST6001S%20SPEC.pdf



> +	// max and min inverted because screen axis is inverted
> +	input_set_abs_params(dev, ABS_Y, 5013, 2260, 0, 0);

I dont think this changes anything for reported coordinates by the
driver.

> +
> +	dev_info(&elo->serio->dev,
> +		 "GeneralTouch ST6001S touchscreen");
> +
> +	return 0;
> +}
> +
>  static int elo_setup_10(struct elo *elo)
>  {
>  	static const char *elo_types[] = { "Accu", "Dura", "Intelli", "Carroll" };
> @@ -361,6 +412,13 @@ static int elo_connect(struct serio *serio, struct
> serio_driver *drv)
>  		input_set_abs_params(input_dev, ABS_X, 0, 255, 0, 0);
>  		input_set_abs_params(input_dev, ABS_Y, 0, 255, 0, 0);
>  		break;
> +
> +	case 4: /* 10-byte protocol with General Touch initialisation */
> +		if (elo_setup_10_gt(elo)) {
> +			err = -EIO;
> +			goto fail3;
> +		}
> +		break;
>  	}
> 
>  	err = input_register_device(elo->dev);
> -- 
> 2.27.0

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-08  5:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-03 21:54 [PATCH RESEND 1/1] Add support for touch screens using the General Touch ST6001S controller Gareth Randall
2021-10-15  9:04 ` Gareth Randall
2021-11-07 13:55   ` Gareth Randall
2021-11-08  5:56 ` Dmitry Torokhov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).