[PATCH v3 14/16] serial: 8250_dw: Add StarFive JH7100 quirk
Andy Shevchenko
andy.shevchenko at gmail.com
Tue Nov 2 13:14:23 PDT 2021
On Tue, Nov 2, 2021 at 6:44 PM Emil Renner Berthing <kernel at esmil.dk> wrote:
>
> On the StarFive JH7100 RISC-V SoC the UART core clocks can't be set to
> exactly 16 * 115200Hz and many other common bitrates. Trying this will
> only result in a higher input clock, but low enough that the UART's
> internal divisor can't come close enough to the baud rate target.
> So rather than try to set the input clock it's better to skip the
> clk_set_rate call and rely solely on the UART's internal divisor.
Bingo!
Reviewed-by: Andy Shevchenko <andy.shevchenko at gmail.com>
> Signed-off-by: Emil Renner Berthing <kernel at esmil.dk>
> ---
> drivers/tty/serial/8250/8250_dw.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
> index 53f57c3b9f42..1769808031c5 100644
> --- a/drivers/tty/serial/8250/8250_dw.c
> +++ b/drivers/tty/serial/8250/8250_dw.c
> @@ -414,6 +414,8 @@ static void dw8250_quirks(struct uart_port *p, struct dw8250_data *data)
>
> if (of_device_is_compatible(np, "marvell,armada-38x-uart"))
> p->serial_out = dw8250_serial_out38x;
> + if (of_device_is_compatible(np, "starfive,jh7100-uart"))
> + p->set_termios = dw8250_do_set_termios;
>
> } else if (acpi_dev_present("APMC0D08", NULL, -1)) {
> p->iotype = UPIO_MEM32;
> @@ -696,6 +698,7 @@ static const struct of_device_id dw8250_of_match[] = {
> { .compatible = "cavium,octeon-3860-uart" },
> { .compatible = "marvell,armada-38x-uart" },
> { .compatible = "renesas,rzn1-uart" },
> + { .compatible = "starfive,jh7100-uart" },
> { /* Sentinel */ }
> };
> MODULE_DEVICE_TABLE(of, dw8250_of_match);
> --
> 2.33.1
>
--
With Best Regards,
Andy Shevchenko
More information about the linux-riscv
mailing list