linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/1] input/touchscreen: Synaptics Touchscreen Driver
@ 2010-03-23  2:07 Christopher Heiny
  2010-03-23  2:07 ` [RFC PATCH 1/1] " Christopher Heiny
  2010-03-23  3:04 ` [RFC PATCH 0/1] " Arve Hjønnevåg
  0 siblings, 2 replies; 17+ messages in thread
From: Christopher Heiny @ 2010-03-23  2:07 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jean Delvare, Linux Kernel, Linux Input, Christopher Heiny,
	Allie Xiong, William Manson

This patch adds an initial driver supporting Synaptics ClearPad
touchscreens that use the RMI4 protocol, as defined here:

http://www.synaptics.com/sites/default/files/511-000136-01_revA.pdf


This patch addresses most of the feedback relating to our previous submission.
Any elements not acted on (such as creation of an 'rmi' bus on the kernel
bus architecture) are captured as TODOs in the code, and will be implemented
in a future submission.  In addition:
    - We think we've resolved all the whitespace issues.  For Kconfig,
      we used the indent pattern used by other modules.  For all other
      sources, we've converted to 8-space hard TAB characters.
    - Some concerns were expressed regarding our I2C implementation.
      Dmitry recommended we contact Jean Delvare for further review,
      so we are cc'ing him on this patch.


This version of the driver does not support all features of the RMI4
protocol yet.  We felt it more important to start with a solid
implementation of the basic functionality, and then build on that base
to support additional features (such as gestures, proximity detection,
capacitive buttons, and so on).

Additionally, as this is our team's first venture into the wonderful
world of kernel submissions, we figured it was important to start out
initially with a fairly simple codebase, just in case we're doing
something horribly wrong.


The significant files in this version of the driver are:
    rmi_core.c
        Implements the basic core of the RMI4 protocol
        including self-discovery of RMI4 functions.  This
        also implements RMI4 function 0x01, which provides
        generic device control.
    rmi_function_11.c
        Implements basic RMI4 function 0x11 (2D sensor)
        features, including multitouch up to 10 fingers.
    rmi_app_touchpad.c
        The major driver functions (mod_init, mod_exit,
        and so on).
An additional file is included, but will eventually be changed/dropped
    rmi_i2c_gta01.c
        Provides platform setup for development.  This will
        be replaced in the future by a generic approach to
        specifying platform parameters.
More detailed descriptions can be found in each file's comments.

We chose to use multiple source files because it makes it easy to add
support for additional RMI4 functions with minimal impact to existing
functions.  Additionally, this supports future changes to the
configuration to allow you to compile in only those RMI4 functions that
you need for your particular device.


There are two existing drivers for similar Synaptics devices in the
current kernel tree (excluding the PS/2 touchpad driver).  These are:

./linux-2.6/drivers/input/mouse/synaptics_i2c.c
      A driver for the Exeda 15mm touchpad, written by Mike Rapoport
      <mike@compulab.co.il> and Igor Grinberg <grinberg@compulab.co.il>

./linux-2.6/drivers/staging/dream/synaptics_i2c_rmi.c
      A driver for the HTC Dream ClearPad, written by Arve Hjønnevåg
      <arve@android.com>

We have not extended these drivers for a couple of reasons.  First, the
two drivers are specific to particular Synaptics products, and it is our
desire to produce a general solution that takes advantage of the 'self
describing' features of products that use the RMI protocol.

Second, and more importantly, is that the existing drivers are written
for an older version of the RMI protocol (aka RMI3) that is being
retired in favor of a more recent and substantially changed version (aka
RMI4).  Most currently shipping Synaptics ClearPads speak the RMI4
protocol, and it will be Synaptics protocol of choice going forward.  In
almost all respects, RMI4 is not backward compatible with RMI3, making
it impractical to support both versions in the same driver.


Comments and other feedback on this driver are welcomed.

Bill Manson
Allie Xiong
Christopher Heiny



---

^ permalink raw reply	[flat|nested] 17+ messages in thread
* [RFC PATCH 0/1] input/touchscreen: Synaptics Touchscreen Driver
@ 2010-05-29  0:29 Christopher Heiny
  2010-05-29  7:54 ` Henrik Rydberg
  0 siblings, 1 reply; 17+ messages in thread
From: Christopher Heiny @ 2010-05-29  0:29 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jean Delvare, Linux Kernel, Linux Input, Christopher Heiny,
	Allie Xiong, William Manson, Joerie de Gram

This patch adds an initial driver supporting Synaptics ClearPad
touchscreens that use the RMI4 protocol, as defined here:

http://www.synaptics.com/sites/default/files/511-000136-01_revA.pdf


This patch addresses most of the feedback relating to our previous submissions.
Of particular interest are I2C changes based on feedback from Jean Delvare.

Any feedback not acted on (such as creation of an 'rmi' bus on the kernel
bus architecture) are captured as TODOs in the code, and will be implemented
in a future submission. Also, we've done a lot of reformatting in order
to make checkpatch happy (down to just a few line length warnings and a couple
of macro formatting issues).

This patch builds for the Omap Zoom2 platform in our development environment,
but I cannot guarantee that it will build for you.  We're working on making
sure it builds generically, and feedback relating to that will be greatly
appreciated (special thanks to Joerie de Gram for his previous feedback
on this).


This version of the driver does not support all features of the RMI4
protocol yet.  We felt it more important to start with a solid
implementation of the basic functionality, and then build on that base
to support additional features (such as gestures, proximity detection,
capacitive buttons, and so on).

Additionally, as this is our team's first venture into the wonderful
world of kernel submissions, we figured it was important to start out
initially with a fairly simple codebase, just in case we're doing
something horribly wrong.


The significant files in this version of the driver are:
    rmi_core.c
        Implements the basic core of the RMI4 protocol
        including self-discovery of RMI4 functions.  This
        also implements RMI4 function 0x01, which provides
        generic device control.
    rmi_function_11.c
        Implements basic RMI4 function 0x11 (2D sensor)
        features, including multitouch up to 10 fingers.
    rmi_app_touchpad.c
        The major driver functions (mod_init, mod_exit,
        and so on).
An additional file is included, but will eventually be changed/dropped
    rmi_i2c_gta01.c
        Provides platform setup for development.  This will
        be replaced in the future by a generic approach to
        specifying platform parameters.
More detailed descriptions can be found in each file's comments.

We chose to use multiple source files because it makes it easy to add
support for additional RMI4 functions with minimal impact to existing
functions.  Additionally, this supports future changes to the
configuration to allow you to compile in only those RMI4 functions that
you need for your particular device.


There are two existing drivers for similar Synaptics devices in the
current kernel tree (excluding the PS/2 touchpad driver).  These are:

./linux-2.6/drivers/input/mouse/synaptics_i2c.c
      A driver for the Exeda 15mm touchpad, written by Mike Rapoport
      <mike@compulab.co.il> and Igor Grinberg <grinberg@compulab.co.il>

./linux-2.6/drivers/staging/dream/synaptics_i2c_rmi.c
      A driver for the HTC Dream ClearPad, written by Arve Hjønnevåg
      <arve@android.com>

We have not extended these drivers for a couple of reasons.  First, the
two drivers are specific to particular Synaptics products, and it is our
desire to produce a general solution that takes advantage of the 'self
describing' features of products that use the RMI protocol.

Second, and more importantly, is that the existing drivers are written
for an older version of the RMI protocol (aka RMI3) that is being
retired in favor of a more recent and substantially changed version (aka
RMI4).  Most currently shipping Synaptics ClearPads speak the RMI4
protocol, and it will be Synaptics protocol of choice going forward.  In
almost all respects, RMI4 is not backward compatible with RMI3, making
it impractical to support both versions in the same driver.


Comments and other feedback on this driver are welcomed.

Bill Manson
Allie Xiong
Christopher Heiny



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

^ permalink raw reply	[flat|nested] 17+ messages in thread
* [RFC PATCH 0/1] input/touchscreen: Synaptics Touchscreen Driver
@ 2010-07-28  0:42 Christopher Heiny
  2010-07-28  0:42 ` Christopher Heiny
  0 siblings, 1 reply; 17+ messages in thread
From: Christopher Heiny @ 2010-07-28  0:42 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jean Delvare, Linux Kernel, Linux Input, Christopher Heiny,
	Allie Xiong, William Manson, Joerie de Gram

This patch adds an initial driver supporting Synaptics ClearPad
touchscreens that use the RMI4 protocol, as defined here:

http://www.synaptics.com/sites/default/files/511-000136-01_revA.pdf


This patch addresses feedback relating to our previous submission on May 28, in particular multifinger comments from Henrik Rydberg.  Additionally, we've added a defconfig file that builds the driver for the Omap Zoom2 platform (assuming you've retrofitted it with an RMI4 sensor).

I2C changes in the May 28th patch were ACK'ed by Jean Delvare on May 29.

Feedback from previous patches that has not yet been acted on (such as creation of an 'rmi' bus on the kernel bus architecture) are captured as TODOs in the code, and will be implemented in a future submission.

This patch builds with the included defconfig in our development environment,
but I cannot guarantee that it will build for you.  We're working on making
sure it builds generically, and feedback relating to that will be greatly
appreciated (special thanks to Joerie de Gram for his previous feedback
on this).


This version of the driver does not support all features of the RMI4
protocol yet.  We felt it more important to start with a solid
implementation of the basic functionality, and then build on that base
to support additional features (such as gestures, proximity detection,
capacitive buttons, and so on).

Additionally, as this is our team's first venture into the wonderful
world of kernel submissions, we figured it was important to start out
initially with a fairly simple codebase, just in case we're doing
something horribly wrong.


The significant files in this version of the driver are:
    rmi_core.c
        Implements the basic core of the RMI4 protocol
        including self-discovery of RMI4 functions.  This
        also implements RMI4 function 0x01, which provides
        generic device control.
    rmi_function_11.c
        Implements basic RMI4 function 0x11 (2D sensor)
        features, including multitouch up to 10 fingers.
    rmi_app_touchpad.c
        The major driver functions (mod_init, mod_exit,
        and so on).
An additional file is included, but will eventually be changed/dropped
    rmi_i2c_gta01.c
        Provides platform setup for development.  This will
        be replaced in the future by a generic approach to
        specifying platform parameters.
More detailed descriptions can be found in each file's comments.

We chose to use multiple source files because it makes it easy to add
support for additional RMI4 functions with minimal impact to existing
functions.  Additionally, this supports future changes to the
configuration to allow you to compile in only those RMI4 functions that
you need for your particular device.


There are two existing drivers for similar Synaptics devices in the
current kernel tree (excluding the PS/2 touchpad driver).  These are:

./linux-2.6/drivers/input/mouse/synaptics_i2c.c
      A driver for the Exeda 15mm touchpad, written by Mike Rapoport
      <mike@compulab.co.il> and Igor Grinberg <grinberg@compulab.co.il>

./linux-2.6/drivers/staging/dream/synaptics_i2c_rmi.c
      A driver for the HTC Dream ClearPad, written by Arve Hjønnevåg
      <arve@android.com>

We have not extended these drivers for a couple of reasons.  First, the
two drivers are specific to particular Synaptics products, and it is our
desire to produce a general solution that takes advantage of the 'self
describing' features of products that use the RMI protocol.

Second, and more importantly, is that the existing drivers are written
for an older version of the RMI protocol (aka RMI3) that is being
retired in favor of a more recent and substantially changed version (aka
RMI4).  Most currently shipping Synaptics ClearPads speak the RMI4
protocol, and it will be Synaptics protocol of choice going forward.  In
almost all respects, RMI4 is not backward compatible with RMI3, making
it impractical to support both versions in the same driver.


Comments and other feedback on this driver are welcomed.

Bill Manson
Allie Xiong
Christopher Heiny



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

^ permalink raw reply	[flat|nested] 17+ messages in thread
* Re: [RFC PATCH 0/1] input/touchscreen: Synaptics Touchscreen Driver
@ 2010-08-25  9:29 Naveen Kumar GADDIPATI
  2010-08-25 18:05 ` William Manson
  2010-08-25 20:59 ` Christopher Heiny
  0 siblings, 2 replies; 17+ messages in thread
From: Naveen Kumar GADDIPATI @ 2010-08-25  9:29 UTC (permalink / raw)
  To: cheiny@synaptics.com, axiong@synaptics.com, wmanson@synaptics.com,
	j.de.gram@gmail.com
  Cc: khali@linux-fr.org, linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org, Linus WALLEIJ,
	Pradeepkumar Kumar SUJUAR, Sundar R IYER

Hi Christopher,

Some generic review comments for this patch

1. Normally, defconfig should be a separate patch. You need not
post the entire defconfig, but only the changes to the Makefiles and
the Kconfig files.

2. All RMI specific files can be moved to a separate driver folder
in input/ like drivers/input/rmi/*.

3. Lots of Hungarian notation in the code. Please refer this snippet.
 
>------------------------------------
>CODE CONTAINS HUNGARIAN NOTATION
>
>Some coding guidlines at some companies require that you type the name 
>of your variables using the infamous hungarian notation:
>http://en.wikipedia.org/wiki/Hungarian_notation
>
>We have an internal coding guideline that touches on the
>subject:
>http://swadvice.lud.stericsson.com/guideline.aspx?nr=57&ver=latest
>
>According to the Linux kernel inventor Linus Torvalds in his document 
>Documentation/CodingStyle in the Linux kernel:
>
>"Encoding the type of a function into the name (so-called Hungarian
>notation) is brain damaged-the compiler knows the types anyway and can 
>check those, and it only confuses the programmer."
>
>Remove all instances of hungariang notation in the code please.
>Includes prefixing pointers with p_*, naming structs with s_*, enums 
>with e_*, suffixes like *32b etc etc.
>-----------------------------------
>

We are also using the Synaptics RMI4 touch pad on our U8500 platform. 
We had to make some changes to these posted drivers to make it work on 
our platform. Also, we modified the touch screen driver to be compliant 
to the kernel coding guidelines, but as a stand alone driver though.

I will soon post out an RFC for our patch which we got working on our board. 
Please do have a look and we would like you guys to incorporate these changes 
into your final patch sets as well, so that we can avoid any re-works later on 
when your patch set gets merged into the mainline kernel.


Cheers!
Naveen

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

end of thread, other threads:[~2010-08-25 20:59 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-23  2:07 [RFC PATCH 0/1] input/touchscreen: Synaptics Touchscreen Driver Christopher Heiny
2010-03-23  2:07 ` [RFC PATCH 1/1] " Christopher Heiny
2010-04-02 12:50   ` Jean Delvare
2010-04-05 23:04     ` Christopher Heiny
2010-03-23  3:04 ` [RFC PATCH 0/1] " Arve Hjønnevåg
2010-03-23 19:18   ` Christopher Heiny
2010-03-23 22:35     ` Arve Hjønnevåg
2010-03-24  1:17       ` Christopher Heiny
  -- strict thread matches above, loose matches on Subject: below --
2010-05-29  0:29 Christopher Heiny
2010-05-29  7:54 ` Henrik Rydberg
2010-05-29 10:01   ` Jean Delvare
2010-05-29 14:48     ` Henrik Rydberg
2010-07-28  0:42 Christopher Heiny
2010-07-28  0:42 ` Christopher Heiny
2010-08-25  9:29 Naveen Kumar GADDIPATI
2010-08-25 18:05 ` William Manson
2010-08-25 20:59 ` Christopher Heiny

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).