diff mbox

INPUT:Add ABS_PRESSURE input event support for touchscreen driver

Message ID 1308881738-6392-1-git-send-email-wdgvip@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wu DaoGuang June 24, 2011, 2:15 a.m. UTC
The touchscreen driver s3c2410_ts.c doesn't work well when using
the tslib, an abstraction layer for touchscreen panel events.
Tslib needs ABS_X ABS_Y and ABS_PRESSURE events to report, but only
the former two the driver can provide.

So this patch fixes the problem.

Signed-off-by: Wu DaoGuang <wdgvip@gmail.com>
---
 drivers/input/touchscreen/s3c2410_ts.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

Comments

Joonyoung Shim June 24, 2011, 2:26 a.m. UTC | #1
On 2011-06-24 ?? 11:15, Wu DaoGuang wrote:
> The touchscreen driver s3c2410_ts.c doesn't work well when using
> the tslib, an abstraction layer for touchscreen panel events.
> Tslib needs ABS_X ABS_Y and ABS_PRESSURE events to report, but only
> the former two the driver can provide.
>
> So this patch fixes the problem.
>
> Signed-off-by: Wu DaoGuang<wdgvip@gmail.com>
> ---
>   drivers/input/touchscreen/s3c2410_ts.c |    4 +++-
>   1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
> index 8feb7f3..0cf4f12 100644
> --- a/drivers/input/touchscreen/s3c2410_ts.c
> +++ b/drivers/input/touchscreen/s3c2410_ts.c
> @@ -126,6 +126,7 @@ static void touch_timer_fire(unsigned long data)
>   			input_report_abs(ts.input, ABS_Y, ts.yp);
>
>   			input_report_key(ts.input, BTN_TOUCH, 1);
> +			input_report_abs(ts.input, ABS_PRESSURE, 1);
>   			input_sync(ts.input);
>
>   			ts.xp = 0;
> @@ -140,6 +141,7 @@ static void touch_timer_fire(unsigned long data)
>   		ts.count = 0;
>
>   		input_report_key(ts.input, BTN_TOUCH, 0);
> +		input_report_abs(ts.input, ABS_PRESSURE, 0);
>   		input_sync(ts.input);
>
>   		writel(WAIT4INT | INT_DOWN, ts.io + S3C2410_ADCTSC);
> @@ -318,7 +320,7 @@ static int __devinit s3c2410ts_probe(struct platform_device *pdev)
>   	ts.input->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
>   	input_set_abs_params(ts.input, ABS_X, 0, 0x3FF, 0, 0);
>   	input_set_abs_params(ts.input, ABS_Y, 0, 0x3FF, 0, 0);
> -
> +	input_set_abs_params(ts.input, ABS_PRESSURE, 0, 1, 0, 0);
>   	ts.input->name = "S3C24XX TouchScreen";
>   	ts.input->id.bustype = BUS_HOST;
>   	ts.input->id.vendor = 0xDEAD;

This is already NAKed patch.

Please refer https://lkml.org/lkml/2010/11/9/270

Thanks.
Mark Brown June 24, 2011, 12:41 p.m. UTC | #2
On Fri, Jun 24, 2011 at 10:15:38AM +0800, Wu DaoGuang wrote:
> The touchscreen driver s3c2410_ts.c doesn't work well when using
> the tslib, an abstraction layer for touchscreen panel events.
> Tslib needs ABS_X ABS_Y and ABS_PRESSURE events to report, but only
> the former two the driver can provide.

It seems much more sane to fix this in tslib, the kernel is not actually
reporting pressure meaningfully here and there's already BTN_TOUCH to
report if the pen is down.
Wu DaoGuang June 27, 2011, 2:15 a.m. UTC | #3
2011/6/24 Mark Brown <broonie@opensource.wolfsonmicro.com>:
> On Fri, Jun 24, 2011 at 10:15:38AM +0800, Wu DaoGuang wrote:
>> The touchscreen driver s3c2410_ts.c doesn't work well when using
>> the tslib, an abstraction layer for touchscreen panel events.
>> Tslib needs ABS_X ABS_Y and ABS_PRESSURE events to report, but only
>> the former two the driver can provide.
>
> It seems much more sane to fix this in tslib, the kernel is not actually
> reporting pressure meaningfully here and there's already BTN_TOUCH to
> report if the pen is down.
>
yeah,I will try to fix it in tslib.
Thanks a lot.
Barry Song June 27, 2011, 3:05 a.m. UTC | #4
> -----Original Message-----
> From: linux-arm-kernel-bounces@lists.infradead.org
> [mailto:linux-arm-kernel-bounces@lists.infradead.org] On Behalf Of daoguang
> wu
> Sent: 2011?6?27? 10:15
> To: Mark Brown
> Cc: kgene.kim@samsung.com; ben-linux@fluff.org;
> dmitry.torokhov@gmail.com; linux-kernel@vger.kernel.org;
> wdgvip@gamil.com; linux-input@vger.kernel.org;
> linux-arm-kernel@lists.infradead.org
> Subject: Re: [PATCH] INPUT:Add ABS_PRESSURE input event support for
> touchscreen driver
> 
> 2011/6/24 Mark Brown <broonie@opensource.wolfsonmicro.com>:
> > On Fri, Jun 24, 2011 at 10:15:38AM +0800, Wu DaoGuang wrote:
> >> The touchscreen driver s3c2410_ts.c doesn't work well when using
> >> the tslib, an abstraction layer for touchscreen panel events.
> >> Tslib needs ABS_X ABS_Y and ABS_PRESSURE events to report, but only
> >> the former two the driver can provide.
> >
> > It seems much more sane to fix this in tslib, the kernel is not actually
> > reporting pressure meaningfully here and there's already BTN_TOUCH to
> > report if the pen is down.
> >
> yeah,I will try to fix it in tslib.

You may send a patch to tslib. 

> Thanks a lot.
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> 
>  To report this email as spam click
> https://www.mailcontrol.com/sr/wQw0zmjPoHdJTZGyOCrrhg==
> t4zoc+!n!INSV2C4qhUHSr1YUlPAL0C6yBmfTIRMbBnxawg== .


Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
More information can be found at www.csr.com. Follow CSR on Twitter at http://twitter.com/CSR_PLC and read our blog at www.csr.com/blog
Wu DaoGuang June 27, 2011, 8:57 a.m. UTC | #5
2011/6/27 Dmitry Torokhov <dmitry.torokhov@gmail.com>:
>
>
> Baohua Song <Baohua.Song@csr.com> wrote:
>
>>
>>
>>> -----Original Message-----
>>> From: linux-arm-kernel-bounces@lists.infradead.org
>>> [mailto:linux-arm-kernel-bounces@lists.infradead.org] On Behalf Of
>>daoguang
>>> wu
>>> Sent: 2011?6?27? 10:15
>>> To: Mark Brown
>>> Cc: kgene.kim@samsung.com; ben-linux@fluff.org;
>>> dmitry.torokhov@gmail.com; linux-kernel@vger.kernel.org;
>>> wdgvip@gamil.com; linux-input@vger.kernel.org;
>>> linux-arm-kernel@lists.infradead.org
>>> Subject: Re: [PATCH] INPUT:Add ABS_PRESSURE input event support for
>>> touchscreen driver
>>>
>>> 2011/6/24 Mark Brown <broonie@opensource.wolfsonmicro.com>:
>>> > On Fri, Jun 24, 2011 at 10:15:38AM +0800, Wu DaoGuang wrote:
>>> >> The touchscreen driver s3c2410_ts.c doesn't work well when using
>>> >> the tslib, an abstraction layer for touchscreen panel events.
>>> >> Tslib needs ABS_X ABS_Y and ABS_PRESSURE events to report, but
>>only
>>> >> the former two the driver can provide.
>>> >
>>> > It seems much more sane to fix this in tslib, the kernel is not
>>actually
>>> > reporting pressure meaningfully here and there's already BTN_TOUCH
>>to
>>> > report if the pen is down.
>>> >
>>> yeah,I will try to fix it in tslib.
>>
>>You may send a patch to tslib.
>>
>
> This has already been fixed in tslib a couple years ago. I'm not sure if a
> new version was cut or not.
> --
> Dmitry

I try the latest tslib ,and find there is no such problem and the
latest version of tslib  can be downloaded from
git://github.com/kergoth/tslib.git.

Thanks a lot.
diff mbox

Patch

diff --git a/drivers/input/touchscreen/s3c2410_ts.c b/drivers/input/touchscreen/s3c2410_ts.c
index 8feb7f3..0cf4f12 100644
--- a/drivers/input/touchscreen/s3c2410_ts.c
+++ b/drivers/input/touchscreen/s3c2410_ts.c
@@ -126,6 +126,7 @@  static void touch_timer_fire(unsigned long data)
 			input_report_abs(ts.input, ABS_Y, ts.yp);
 
 			input_report_key(ts.input, BTN_TOUCH, 1);
+			input_report_abs(ts.input, ABS_PRESSURE, 1);
 			input_sync(ts.input);
 
 			ts.xp = 0;
@@ -140,6 +141,7 @@  static void touch_timer_fire(unsigned long data)
 		ts.count = 0;
 
 		input_report_key(ts.input, BTN_TOUCH, 0);
+		input_report_abs(ts.input, ABS_PRESSURE, 0);
 		input_sync(ts.input);
 
 		writel(WAIT4INT | INT_DOWN, ts.io + S3C2410_ADCTSC);
@@ -318,7 +320,7 @@  static int __devinit s3c2410ts_probe(struct platform_device *pdev)
 	ts.input->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
 	input_set_abs_params(ts.input, ABS_X, 0, 0x3FF, 0, 0);
 	input_set_abs_params(ts.input, ABS_Y, 0, 0x3FF, 0, 0);
-
+	input_set_abs_params(ts.input, ABS_PRESSURE, 0, 1, 0, 0);
 	ts.input->name = "S3C24XX TouchScreen";
 	ts.input->id.bustype = BUS_HOST;
 	ts.input->id.vendor = 0xDEAD;