diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-04-16 08:53:11 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-06-20 08:49:56 +0200 |
commit | aee8a91bed2fa5fd95d4b43fcf9ae6b02ae8797d (patch) | |
tree | db25268875707e1bd2f86e3eaa18fc0844ebf228 /drivers/serial | |
parent | 779caca4e6a08c63ff02db607f1ad855ae03fab9 (diff) | |
download | barebox-aee8a91bed2fa5fd95d4b43fcf9ae6b02ae8797d.tar.gz barebox-aee8a91bed2fa5fd95d4b43fcf9ae6b02ae8797d.tar.xz |
serial: auart: Use clk support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/serial_auart.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/serial/serial_auart.c b/drivers/serial/serial_auart.c index a69e65b91b..98f7c75de5 100644 --- a/drivers/serial/serial_auart.c +++ b/drivers/serial/serial_auart.c @@ -42,6 +42,8 @@ #include <io.h> #include <malloc.h> #include <notifier.h> +#include <linux/clk.h> +#include <linux/err.h> #include <mach/clock.h> #include <mach/mxs.h> @@ -92,6 +94,7 @@ struct auart_priv { int baudrate; struct notifier_block notify; void __iomem *base; + struct clk *clk; }; static void auart_serial_putc(struct console_device *cdev, char c) @@ -143,7 +146,7 @@ static int auart_serial_setbaudrate(struct console_device *cdev, int new_baudrat writel(0x0, priv->base + HW_UARTAPP_CTRL2); /* Calculate and set baudrate */ - quot = (imx_get_xclk() * 32) / new_baudrate; + quot = (clk_get_rate(priv->clk) * 32) / new_baudrate; reg = BF_UARTAPP_LINECTRL_BAUD_DIVFRAC(quot & 0x3F) | BF_UARTAPP_LINECTRL_BAUD_DIVINT(quot >> 6) | BF_UARTAPP_LINECTRL_WLEN(3) | @@ -194,6 +197,9 @@ static int auart_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); auart_serial_init_port(priv); auart_serial_setbaudrate(cdev, CONFIG_BAUDRATE); |