• Finn Thain's avatar
    CUDA ADB fixes · 0251c38c
    Finn Thain authored
    Fix the flakiness in the CUDA ADB driver on m68k macs (keypresses getting
    wedged down or ADB just going AWOL altogether).
    
    The only IRQ used by this driver is the VIA shift register IRQ. The PowerMac
    conditional code disables the other VIA IRQ sources, so don't mess with the
    other IRQ flags in the common code -- m68k macs need them.
    
    When polling, don't disable local interrupts when we only need to disable the
    CUDA interrupt.
    
    Unless polling, don't clear the shift register IRQ flag. On m68k macs this
    creates a race that often breaks CUDA ADB.
    
    Tested on Quadra 840av and LC630 (both m68k); also Beige G3 (powerpc).
    Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
    Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0251c38c
via-cuda.c 15.6 KB