[PATCH v8 02/22] riscv: Fix sifive serial driver
Palmer Dabbelt
palmer at dabbelt.com
Thu Dec 10 21:09:40 EST 2020
On Thu, 10 Dec 2020 06:02:53 PST (-0800), Damien Le Moal wrote:
> Setup the port uartclk in sifive_serial_probe() so that the base baud
> rate is correctly printed during device probe instead of always showing
> "0". I.e. the probe message is changed from
>
> 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1,
> base_baud = 0) is a SiFive UART v0
>
> to the correct:
>
> 38000000.serial: ttySIF0 at MMIO 0x38000000 (irq = 1,
> base_baud = 115200) is a SiFive UART v0
>
> Signed-off-by: Damien Le Moal <damien.lemoal at wdc.com>
> ---
> drivers/tty/serial/sifive.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c
> index 13eadcb8aec4..214bf3086c68 100644
> --- a/drivers/tty/serial/sifive.c
> +++ b/drivers/tty/serial/sifive.c
> @@ -999,6 +999,7 @@ static int sifive_serial_probe(struct platform_device *pdev)
> /* Set up clock divider */
> ssp->clkin_rate = clk_get_rate(ssp->clk);
> ssp->baud_rate = SIFIVE_DEFAULT_BAUD_RATE;
> + ssp->port.uartclk = ssp->baud_rate * 16;
> __ssp_update_div(ssp);
>
> platform_set_drvdata(pdev, ssp);
Reviewed-by: Palmer Dabbelt <palmerdabbelt at google.com>
Acked-by: Palmer Dabbelt <palmerdabbelt at google.com>
As an aside: is this an intrinsic property of being a serial port, or specific
to the SiFive driver? We seem to multiply/divide by 16 quite a bit to convert
between baud rates and clocks, so if it's specific to SiFive then it seems
reasonable to name that constant in this driver. If it's a serial thing then I
guess we should just do whatever everyone else is doing.
Don't think that blocks this patch, though, as it's all over the place.
More information about the linux-riscv
mailing list