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

From: Neil Leeder
Date: Fri Aug 13 2010 - 17:56:49 EST


On 8/12/2010 10:49 PM, Dmitry Torokhov wrote:
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. 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?

Could you please tell me if the following works for you? Note that it
expects IRQ to be set up properly (edge vs. level trigger) by the
platform code

The i2c_board_info that supplies the irq # from platform code doesn't have a way to set i2c flags, and can't set_irq_type() until after irq_request(). This may require another platform_data struct to pass the trigger level in.

Thanks.

--
Neil
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/