remarkable-linux/drivers/auxdisplay
Dmitry Torokhov cac513f1a9 auxdisplay: ht16k33: rework input device initialization
This patch fixes following issues in input device (keypad) handling:

- requesting IRQ before allocating and initializing parts of the device
  that can be referenced from IRQ handler is racy, even if we try to
  disable interrupt after requesting it. Let's move allocations around
  so that everything is ready by the time we request IRQ.

- using threaded interrupt handler to schedule a work item it sub-optimal.
  Disabling and then re-enabling interrupts in work item and in open/close
  methods is prone to races and exactly the reason theraded interrupts were
  introduced. Let's use the infrastructure properly and keep scanning the
  matrix array in IRQ thread, stopping when there are no keys, or when told
  to do so.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Tested-by: Robin van der Gracht <robin@protonic.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-02-10 15:57:28 +01:00
..
cfag12864b.c
cfag12864bfb.c
ht16k33.c auxdisplay: ht16k33: rework input device initialization 2017-02-10 15:57:28 +01:00
img-ascii-lcd.c auxdisplay: img-ascii-lcd: driver for simple ASCII LCD displays 2016-10-06 17:03:41 +02:00
Kconfig auxdisplay: fix new ht16k33 build errors 2017-01-11 09:27:30 +01:00
ks0108.c auxdisplay: ks0108: initialize local parport variable 2015-08-14 17:27:17 -07:00
Makefile auxdisplay: ht16k33: Driver for LED controller 2016-11-10 16:53:19 +01:00