• Vamshi Gajjela's avatar
    serial: core: Clean up uart_update_timeout() function · d4303e0b
    Vamshi Gajjela authored
    Rename the variable size to temp and change its data type from
    unsigned int to u64 to avoid type casting in multiplication. Remove the
    intermediate variable frame_time and use temp instead to accommodate
    the nanoseconds(ns). port->frame_time is an unsigned int, therefore an
    explicit cast is used to improve readability. Having said this unsigned
    int is sufficinet to hold frame time duration in nanoseconds for all
    the standard baudrates.
    
    Consider 9600 baud, it takes 1/9600 seconds for one bit, for a total of
    10 bits (start, 8-bit data, stop) 10/9600=1.04 ms for 1 byte transfer,
    frame_time here is 1041667ns. As baudrate increases frame_time
    decreases, say for 115200 baud it is 86806ns.
    
    To avoid costly 64-bit arithmetic we do not upconvert the type for
    variable frame_time as overflow happens for extremely low baudrates
    which are impractical and are not used in real-world applications.
    Signed-off-by: default avatarVamshi Gajjela <vamshigajjela@google.com>
    Link: https://lore.kernel.org/r/20231109063417.3971005-3-vamshigajjela@google.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d4303e0b
serial_core.c 91.3 KB