• Haavard Skinnemoen's avatar
    atmel_serial: fix break handling · 9e6077bd
    Haavard Skinnemoen authored
    The RXBRK field in the AT91/AT32 USART status register has the
    following definition according to e.g. the AT32AP7000 data sheet:
    
        RXBRK: Break Received/End of Break
        0: No Break received or End of Break detected since the last RSTSTA.
        1: Break Received or End of Break detected since the last RSTSTA.
    
    Thus, for each break, the USART sets the RXBRK bit twice. This patch
    modifies the driver to report the break event to the serial core only
    once by keeping track of whether a break condition is currently
    active. The break_active flag is reset as soon as a character is
    received, so even if we miss the start-of-break interrupt this should
    do the right thing.
    Signed-off-by: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
    Cc: Andrew Victor <andrew@sanpeople.com>
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Ivan Kuten <ivan.kuten@promwad.com>
    Cc: Nicolas Ferre <nicolas.ferre@rfo.atmel.com>
    Cc: Patrice Vilchez <patrice.vilchez@rfo.atmel.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9e6077bd
atmel_serial.c 25.8 KB