|
|
@@ -257,7 +257,7 @@ static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios,
|
|
|
{
|
|
|
unsigned int baud = tty_termios_baud_rate(termios);
|
|
|
struct dw8250_data *d = p->private_data;
|
|
|
- unsigned int rate;
|
|
|
+ long rate;
|
|
|
int ret;
|
|
|
|
|
|
if (IS_ERR(d->clk) || !old)
|
|
|
@@ -265,7 +265,10 @@ static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios,
|
|
|
|
|
|
clk_disable_unprepare(d->clk);
|
|
|
rate = clk_round_rate(d->clk, baud * 16);
|
|
|
- ret = clk_set_rate(d->clk, rate);
|
|
|
+ if (rate < 0)
|
|
|
+ ret = rate;
|
|
|
+ else
|
|
|
+ ret = clk_set_rate(d->clk, rate);
|
|
|
clk_prepare_enable(d->clk);
|
|
|
|
|
|
if (!ret)
|