Commit 24bc6e68 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Greg Kroah-Hartman

serial: sc16is7xx: Respect clock-frequency property

If the property is provided and there are no other possibilities to detect
UART clock frequency, use it as a fallback.
Tested-By: default avatarGeorgii Staroselskii <georgii.staroselskii@emlid.com>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8650e026
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/property.h>
#include <linux/regmap.h> #include <linux/regmap.h>
#include <linux/serial_core.h> #include <linux/serial_core.h>
#include <linux/serial.h> #include <linux/serial.h>
...@@ -1179,7 +1180,8 @@ static int sc16is7xx_probe(struct device *dev, ...@@ -1179,7 +1180,8 @@ static int sc16is7xx_probe(struct device *dev,
struct regmap *regmap, int irq, unsigned long flags) struct regmap *regmap, int irq, unsigned long flags)
{ {
struct sched_param sched_param = { .sched_priority = MAX_RT_PRIO / 2 }; struct sched_param sched_param = { .sched_priority = MAX_RT_PRIO / 2 };
unsigned long freq, *pfreq = dev_get_platdata(dev); unsigned long freq = 0, *pfreq = dev_get_platdata(dev);
u32 uartclk = 0;
int i, ret; int i, ret;
struct sc16is7xx_port *s; struct sc16is7xx_port *s;
...@@ -1193,10 +1195,17 @@ static int sc16is7xx_probe(struct device *dev, ...@@ -1193,10 +1195,17 @@ static int sc16is7xx_probe(struct device *dev,
return -ENOMEM; return -ENOMEM;
} }
/* Always ask for fixed clock rate from a property. */
device_property_read_u32(dev, "clock-frequency", &uartclk);
s->clk = devm_clk_get(dev, NULL); s->clk = devm_clk_get(dev, NULL);
if (IS_ERR(s->clk)) { if (IS_ERR(s->clk)) {
if (uartclk)
freq = uartclk;
if (pfreq) if (pfreq)
freq = *pfreq; freq = *pfreq;
if (freq)
dev_dbg(dev, "Clock frequency: %luHz\n", freq);
else else
return PTR_ERR(s->clk); return PTR_ERR(s->clk);
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment