Re: [PATCH v3 3/4] serial: 8250_dw: Simplify the ref clock rate setting procedure

From: Andy Shevchenko
Date: Fri May 15 2020 - 10:05:54 EST


On Thu, May 07, 2020 at 02:31:34AM +0300, Serge Semin wrote:
> Really instead of twice checking the clk_round_rate() return value
> we could do it once, and if it isn't error the clock rate can be changed.
> By doing so we decrease a number of ret-value tests and remove a weird
> goto-based construction implemented in the dw8250_set_termios() method.

> rate = clk_round_rate(d->clk, baud * 16);
> - if (rate < 0)
> - ret = rate;

> - else if (rate == 0)
> - ret = -ENOENT;

This case now handled differently.
I don't think it's good idea to change semantics.

So, I don't see how this, after leaving the rate==0 case, would be better than
original one.

> - else
> + if (rate > 0) {
> ret = clk_set_rate(d->clk, rate);
> + if (!ret)
> + p->uartclk = rate;
> + }
> clk_prepare_enable(d->clk);
>
> - if (ret)
> - goto out;
> -
> - p->uartclk = rate;
> -
> -out:
> p->status &= ~UPSTAT_AUTOCTS;
> if (termios->c_cflag & CRTSCTS)
> p->status |= UPSTAT_AUTOCTS;

--
With Best Regards,
Andy Shevchenko