Re: [PATCH resend v2] input: Add new sun4i-lradc-keys driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi,

On 17-12-14 18:32, Dmitry Torokhov wrote:
On Wednesday, December 17, 2014 03:43:31 PM Hans de Goede wrote:
+       /*
+        * lradc supports only one keypress at a time, release does not give
+        * any info as to which key was released, so we cache the keycode.
+        */
+       if ((ints & CHAN0_KEYDOWN_IRQ) && lradc->chan0_keycode == 0) {
+               val = readl(lradc->base + LRADC_DATA0) & 0x3f;
+               voltage = val * lradc->vref / 63;
+
+               for (i = 0; i < lradc->chan0_map_count; i++) {
+                       diff = abs(lradc->chan0_map[i].voltage - voltage);
+                       if (diff < closest) {
+                               closest = diff;
+                               keycode = lradc->chan0_map[i].keycode;
+                       }
+               }
+
+               lradc->chan0_keycode = keycode;
+               input_report_key(lradc->input, lradc->chan0_keycode, 1);
+       }
+
+       if (ints & CHAN0_KEYUP_IRQ) {
+               input_report_key(lradc->input, lradc->chan0_keycode, 0);
+               lradc->chan0_keycode = 0;
+       }

Can release and press be reported simultaneously? Should we process release
first?

Good question, I guess if we are somehow really slow with processing the interrupt
that this may happen. So I'll do a v3 swapping the 2.

Regards,

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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux