• Matt Redfearn's avatar
    MIPS: Add custom serial.h with BASE_BAUD override for generic kernel · c8ec2041
    Matt Redfearn authored
    Add a custom serial.h header for MIPS, allowing platforms to override
    the asm-generic version if required.
    
    The generic platform uses this header to set BASE_BAUD to 0. The
    generic platform supports multiple boards, which may have different
    UART clocks. Also one of the boards supported is the Boston FPGA board,
    where the UART clock depends on the loaded FPGA bitfile. As such there
    is no way that the generic kernel can set a compile time default
    BASE_BAUD.
    
    Commit 31cb9a85 ("earlycon: initialise baud field of earlycon device
    structure") changed the behavior of of_setup_earlycon such that any baud
    rate set in the device tree is now set in the earlycon structure. The
    UART driver will then calculate a divisor based on BASE_BAUD and set it.
    With MIPS generic kernels this resulted in garbage output due to the
    incorrect uart clock rate being used to calculate a divisor. This
    commit, combined with "serial: 8250_early: Only set divisor if valid clk
    & baud" prevents the earlycon code setting a bad divisor and restores
    earlycon output.
    
    Fixes: 31cb9a85 ("earlycon: initialise baud field of earlycon device structure")
    Cc: stable <stable@vger.kernel.org> # 4.14
    Signed-off-by: default avatarMatt Redfearn <matt.redfearn@mips.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c8ec2041
serial.h 607 Bytes