Re: [PATCH v2] Driver for AUO In-Cell touchscreens using pixcir ICs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dmitry,

thanks for the review

Am Dienstag, 6. Dezember 2011, 06:56:37 schrieb Dmitry Torokhov:
> On Mon, Dec 05, 2011 at 09:05:30PM +0100, Heiko Stübner wrote:
> > Some displays from AUO have a so called in-cell touchscreen, meaning it
> > is built directly into the display unit.
> > 
> > Touchdata is gathered through PIXCIR Tango-ICs and processed in an
> > Atmel ATmega168P with custom firmware. Communication between the host
> > system and ATmega is done via I2C.
> > 
> > Devices using this touch solution include the Dell Streak5 and the family
> > of Qisda ebook readers.
> > 
> > The driver reports single- and multi-touch events including touch area
> > values.
> > 
> > Signed-off-by: Heiko Stuebner <heiko@xxxxxxxxx>
> > ---
> > changes since v1: address comments from Christoph Fritz
> > (wrong type for error checks, wrong call to input_free_device)
> > 
> >  drivers/input/touchscreen/Kconfig         |   14 +
> >  drivers/input/touchscreen/Makefile        |    1 +
> >  drivers/input/touchscreen/auo-pixcir-ts.c |  656
> >  +++++++++++++++++++++++++++++ include/linux/input/auo-pixcir-ts.h      
> >  |   57 +++
> >  4 files changed, 728 insertions(+), 0 deletions(-)
> >  create mode 100644 drivers/input/touchscreen/auo-pixcir-ts.c
> >  create mode 100644 include/linux/input/auo-pixcir-ts.h
> > 

[ ... small corrections, thanks for finding them ... ]

> > +
> > +		for (i = 0; i < AUO_PIXCIR_REPORT_POINTS; i++) {
> > +			if (point[i].coord_x > 0 || point[i].coord_y > 0) {
> > +				input_report_abs(ts->input, ABS_MT_POSITION_X,
> > +						 point[i].coord_x);
> > +				input_report_abs(ts->input, ABS_MT_POSITION_Y,
> > +						 point[i].coord_y);
> > +				input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR,
> > +						 point[i].area_major);
> > +				input_report_abs(ts->input, ABS_MT_TOUCH_MINOR,
> > +						 point[i].area_minor);
> > +				input_report_abs(ts->input, ABS_MT_ORIENTATION,
> > +						 point[i].orientation);
> > +				input_mt_sync(ts->input);
> 
> Is there a way to track the contacts and switch to protocol B by any
> chance?
I'm not sure, but will check how the device handles changing the number of 
touching fingers and if it would be possible to switch.

> > +
> > +				/* use first finger as source for singletouch */
> > +				if (fingers == 0)
> > +					abs = i;
> > +
> > +				/* number of touch points could also be queried
> > +				 * via i2c but would require an additional call
> > +				 */
> > +				fingers++;
> > +			}
> > +		}

[ ... more small stuff for me to fix ... ]

> > +
> > +	ret = input_register_device(input_dev);
> > +	if (ret) {
> > +		dev_err(&client->dev, "could not register input device\n");
> > +		goto err_input_register;
> > +	}
> > +
> > +	input_set_drvdata(ts->input, ts);
> 
> Just do this earlier and then auo_pixcir_stop() is enough, you won't
> need to call auo_pixcir_int_enable() before registering IRQ.

Just to be sure, you mean moving the input_set_drvdata before the irq-
registration?

> > +
> > +	i2c_set_clientdata(client, ts);
> > +
> > +	return 0;
> > +

[ ... and still more small stuff ]

Thanks
Heiko
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux