Thread (19 messages) 19 messages, 6 authors, 2010-08-26

Re: [PATCH v2] input: mouse: add qci touchpad driver

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2010-08-14 00:54:57
Also in: linux-arm-msm, lkml

On Friday, August 13, 2010 02:56:41 pm Neil Leeder wrote:
On 8/12/2010 10:49 PM, Dmitry Torokhov wrote:
quoted
On Thu, Aug 12, 2010 at 01:58:18PM -0400, Neil Leeder wrote:
Actually, since this is not a new touchpad but simply a PS/2 interface
it should be implemented as a serio driver, not input device driver.
Dmitri,

Thanks for supplying that serio driver. I just have a couple of questions.

Even though the interface on the wpce775x EC happens to be a PS/2
interface, this is completely hidden by the firmware on that device. To
the linux driver it looks like a dedicated i2c connection directly to
the touchpad. You can't substitute any other device on that PS/2
interface without rewriting the firmware in the EC - it's not a generic
interface.  A manufacturer could even move the touchpad from the PS/2
interface to say GPIOs, re-write the firmware and the linux driver
couldn't tell the difference.
Hmm, according to the following diagram from  Nuvoton trhe chip does in
fact has a distinct PS/2 interface (3 of them actually):

http://www.nuvoton.com/NuvotonMOSS/Community/ProductInfo.aspx?tp_GUID=d2a1e761-c93d-4bf0-b292-acb80b38cfaf

Also it is not a simple coincidence that to enable device you send 0xf4
to it (which is PSMOUSE_CMD_ENABLE - standard PS/2 command). This tends
to suggest that interface is not actually hidden and that the device
(touchpad) could be replaced with other kinds of devices.

Anyway, please try the driver (you  may need to hardcode the IRQ trigger
type for now) and see if psmouse is able to talk to the touchpad. If it
is then serio is the proper solution.
Does that change the rationale for using a
serio driver?

If the request to use a serio driver is still valid, then it seems that
the workqueue from the interrupt handler sends each byte of data
received over i2c in a separate serio_interrupt() call to the touchpad
driver. Touchpad data comes in 3-byte packets, so the touchpad driver
will have to re-assemble the packet from 3 separate interrupts. Is that
the intended use?
Yes, serio ports are byte-oriented devices. psmouse and atkbd drivers should
be able to work with such data.

Thanks.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help