• Jan Kundrát's avatar
    serial: max310x: use a batch write op for UART transmit · d584b65c
    Jan Kundrát authored
    The transmit register supports batched writes. The key is simply to keep
    sending additional bytes up to the FIFO size in the same SPI
    transaction with the CS pin still being held low.
    
    This duplicates the regmap infrastructure to a certain extent. There are
    some provisions for multiple writes in there, but there does not appear
    to be any support for those writes which are destined to the *same*
    register (and also no standard for SPI bus transfers of these, anyway).
    
    This patch does not solve every case (if the UART xmit circular buffer
    wraps around, we're still doing two SPI transactions), but at least
    it's not one-byte-per-transaction anymore.
    
    This change does not touch the receive path at this time. Doing that in
    the generic case appears to be impossible in the general case, because
    the chips' status register contains data about the *current* byte in the
    HW's Rx FIFO. We cannot read these two registers in one go,
    unfortunately.
    Signed-off-by: default avatarJan Kundrát <jan.kundrat@cesnet.cz>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d584b65c
max310x.c 39.1 KB