linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christopher Heiny <cheiny@synaptics.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Jean Delvare <khali@linux-fr.org>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Linux Input <linux-input@vger.kernel.org>,
	Christopher Heiny <cheiny@synaptics.com>,
	Allie Xiong <axiong@synaptics.com>,
	William Manson <wmanson@synaptics.com>,
	Joerie de Gram <j.de.gram@gmail.com>,
	Linus Walleij <linus.walleij@stericsson.com>,
	Naveen Kumar Gaddipati <naveen.gaddipati@stericsson.com>,
	Abraham Arce <x0066660@ti.com>
Subject: [PATCH 0/1] input synaptics-rmi4: Synaptics Touchscreen Driver
Date: Wed, 12 Jan 2011 18:40:52 -0800	[thread overview]
Message-ID: <1294886453-7972-1-git-send-email-cheiny@synaptics.com> (raw)

This patch implements a driver supporting Synaptics ClearPad and other
touchscreens that use the RMI4 protocol, as defined here:

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

This patch is against the synaptics-rmi4 branch of Dmitry's Torokhov's input
git repository.  Base point is the origin of the branch, commit
a6268cc5f94c89c9e661150fe136b24e69d6cc01.

I2C functionality was previously ACK'ed by Jean Delvare on 2010/05/29.

This patch builds and runs 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 implements the following:
    - basic device control support
    - support basic multifinger touchscreen behavior
    - support for device reflash
It represents a significant rearchitecture and reimplementation since
our patch of 2010/07/27, based on feedback from that patch and subsequent
discussions with kernel maintainers.

This patch supports a system having one or more RMI sensors attached to it.
Most devices have just a single touch sensor, but some have more than one.
An example is the Fuse concept phone, which has 4 RMI sensors in it).
Each sensor implements a number of RMI4 functions, which are best represented
as devices on the bus.

Included in this patch are the following components:

    - a low level layer providing access to the physical bus (rmi_i2c
      and rmi_spi).

    - an rmi_bus module, implementing /sys/bus/rmi.  This module presents
      the individual devices on the bus, handles interdevice communications
      (mostly just IRQ notifications from F01 to other functions), and
      proxies register read/write requests to the appropriate physical layer
      for a given sensor.

    - individual sensors are presented on the bus as /sys/bus/rmi/sensor0/,
      /sys/bus/rmi/sensor01/, and so on.
      
    - functions for each sensor are presented as devices below that sensor, for
      example /sys/bus/rmi/sensor0/f01, /sys/bus/rmi/sensor0/f11, and so on.

    - per-function drivers are matched to these devices by the kernel bus
      functionality

We chose this approach because almost all RMI4 functions are independent
of one another.  The sole exception is F01, and its primary interaction
with other functions is to notify them of the need to read or write data
from or to the sensor.

This structure eliminates the ad hoc device matching that was present in our
previous driver submissions.  It also enables easy addition of support for 
additional RMI4 functions, either by Synaptics or by third parties.


Comments and other feedback on this driver are welcomed.

Bill Manson
Allie Xiong
Christopher Heiny

Cc: Jean Delvare <khali@linux-fr.org>
Cc: Linus Walleij <linus.walleij@stericsson.com>
Cc: Naveen Kumar Gaddipati <naveen.gaddipati@stericsson.com>
Cc: Abraham Arce <x0066660@ti.com>


---

             reply	other threads:[~2011-01-13 14:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-13  2:40 Christopher Heiny [this message]
2011-01-13  2:40 ` [PATCH 1/1] input synaptics-rmi4: Synaptics Touchscreen Driver Christopher Heiny

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1294886453-7972-1-git-send-email-cheiny@synaptics.com \
    --to=cheiny@synaptics.com \
    --cc=axiong@synaptics.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=j.de.gram@gmail.com \
    --cc=khali@linux-fr.org \
    --cc=linus.walleij@stericsson.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=naveen.gaddipati@stericsson.com \
    --cc=wmanson@synaptics.com \
    --cc=x0066660@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).