| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Date: Wed, 31 May 2017 22:21:03 +0200 |
| Subject: Fix serial console on SNI RM400 machines |
| |
| From: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| |
| |
| [ Upstream commit e279e6d98e0cf2c2fe008b3c29042b92f0e17b1d ] |
| |
| sccnxp driver doesn't get the correct uart clock rate, if CONFIG_HAVE_CLOCK |
| is disabled. Correct usage of clk API to make it work with/without it. |
| |
| Fixes: 90efa75f7ab0 (serial: sccnxp: Using CLK API for getting UART clock) |
| |
| Suggested-by: Russell King - ARM Linux <linux@armlinux.org.uk> |
| Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/tty/serial/sccnxp.c | 15 ++++++++++----- |
| 1 file changed, 10 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/tty/serial/sccnxp.c |
| +++ b/drivers/tty/serial/sccnxp.c |
| @@ -884,14 +884,19 @@ static int sccnxp_probe(struct platform_ |
| |
| clk = devm_clk_get(&pdev->dev, NULL); |
| if (IS_ERR(clk)) { |
| - if (PTR_ERR(clk) == -EPROBE_DEFER) { |
| - ret = -EPROBE_DEFER; |
| + ret = PTR_ERR(clk); |
| + if (ret == -EPROBE_DEFER) |
| goto err_out; |
| - } |
| + uartclk = 0; |
| + } else { |
| + clk_prepare_enable(clk); |
| + uartclk = clk_get_rate(clk); |
| + } |
| + |
| + if (!uartclk) { |
| dev_notice(&pdev->dev, "Using default clock frequency\n"); |
| uartclk = s->chip->freq_std; |
| - } else |
| - uartclk = clk_get_rate(clk); |
| + } |
| |
| /* Check input frequency */ |
| if ((uartclk < s->chip->freq_min) || (uartclk > s->chip->freq_max)) { |