summaryrefslogtreecommitdiffstats
path: root/drivers/serial/stm-serial.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-04-16 08:53:26 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-06-20 08:49:56 +0200
commit3d8304d6284ea22f4ed8fdf3c59fe7a01ed98591 (patch)
tree9a9a9358eefa2177aab62a3eb378744e27d7bb16 /drivers/serial/stm-serial.c
parentaee8a91bed2fa5fd95d4b43fcf9ae6b02ae8797d (diff)
downloadbarebox-3d8304d6284ea22f4ed8fdf3c59fe7a01ed98591.tar.gz
barebox-3d8304d6284ea22f4ed8fdf3c59fe7a01ed98591.tar.xz
serial: stm: Use clk support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/serial/stm-serial.c')
-rw-r--r--drivers/serial/stm-serial.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/serial/stm-serial.c b/drivers/serial/stm-serial.c
index a1bb7334b5..0d7484f4bd 100644
--- a/drivers/serial/stm-serial.c
+++ b/drivers/serial/stm-serial.c
@@ -29,6 +29,8 @@
#include <gpio.h>
#include <io.h>
#include <malloc.h>
+#include <linux/clk.h>
+#include <linux/err.h>
#include <mach/imx-regs.h>
#include <mach/clock.h>
@@ -56,6 +58,7 @@ struct stm_priv {
int baudrate;
struct notifier_block notify;
void __iomem *base;
+ struct clk *clk;
};
static void stm_serial_putc(struct console_device *cdev, char c)
@@ -107,7 +110,7 @@ static int stm_serial_setbaudrate(struct console_device *cdev, int new_baudrate)
writel(0, priv->base + UARTDBGCR);
/* Calculate and set baudrate */
- quot = (imx_get_xclk() * 4) / new_baudrate;
+ quot = (clk_get_rate(priv->clk) * 4) / new_baudrate;
writel(quot & 0x3f, priv->base + UARTDBGFBRD);
writel(quot >> 6, priv->base + UARTDBGIBRD);
@@ -160,6 +163,9 @@ static int stm_serial_probe(struct device_d *dev)
dev->priv = priv;
priv->base = dev_request_mem_region(dev, 0);
+ priv->clk = clk_get(dev, NULL);
+ if (IS_ERR(priv->clk))
+ return PTR_ERR(priv->clk);
stm_serial_init_port(priv);
stm_serial_setbaudrate(cdev, CONFIG_BAUDRATE);