• Dmitry Torokhov's avatar
    auxdisplay: ht16k33: rework input device initialization · cac513f1
    Dmitry Torokhov authored
    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: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    Tested-by: default avatarRobin van der Gracht <robin@protonic.nl>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    cac513f1
ht16k33.c 13.6 KB