Re: [PATCH v3] Input - surface3_spi: add new driver for the Surface 3
flat view
From: Benjamin Tissoires <hidden>
Date: 2016-05-17 19:14:00
Also in:
lkml
On May 17 2016 or thereabouts, Dmitry Torokhov wrote:
Hi Benjamin, On Tue, May 17, 2016 at 12:16:19PM +0200, Benjamin Tissoires wrote:quoted
This is a basic driver for the Surface 3. I am not so sure it will work with any firmwares as most values are encoded, but given that I only have access to my current device with its firmware and I don't have the datasheet, it should be OK for now. The Surface Pen is not supported (if it is supposed to be). I'll work on this when I get one. Signed-off-by: Benjamin Tissoires <redacted> --- Changes in v2: - module renamed from ntrig_spi to surface3_spi - took into account Dmitry's remarks - kept the retrieval of the GPIO as mandatory as otherwise the device fails to work Changes in v3: - asm include put at the end - used proper types in struct surfacae3_ts_data_finger - dropped temps in surface3_spi_report_touch() - inlined surface3_spi_request_irq() - detect IRQ type (falling/rising) depending on the gpiod active low parameterI do not think that this should be done in the driver. The device either has interrupt descriptor or GpioInt decriptor in DSDT and SPI core/ACPI should do the right thing and configure GPIO as input and set interrupt polarity accordingly, so when you do request_threaded_irq() you only need to specify IRQF_ONESHOT. See drivers/spi/spi.c - in case there is no interrupt specified we call acpi_dev_gpio_irq_get(). Do you see it called in your case? Or your DSDT has interrupt for the touchscreen device and acpi_spi_add_resource() and acpi_dev_resource_interrupt() are called? You need to trace it and figure out if there is an issue there with setting up interrupt properly.
Looks like I need to push further the tests. From what I can see, using just IRQF_ONESHOT is not sufficient enough and I need to add the trigger falling manually (thus this way of doing). I'll keep digging. Cheers, Benjamin