[PATCH resend v2] input: Add new sun4i-lradc-keys driver
Hans de Goede
hdegoede at redhat.com
Thu Dec 18 00:42:14 PST 2014
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
More information about the linux-arm-kernel
mailing list