aboutsummaryrefslogtreecommitdiff
path: root/drivers/tty/serial
diff options
context:
space:
mode:
authorGravatar Biju Das <biju.das.jz@bp.renesas.com> 2023-02-27 11:41:50 +0000
committerGravatar Greg Kroah-Hartman <gregkh@linuxfoundation.org> 2023-03-09 17:21:54 +0100
commit7eada8a122a2683ec63ad43982a4552b054d59ca (patch)
tree1cfcddee548c9cf26966b626e858deeb6dc9cd9a /drivers/tty/serial
parentserial: 8250_em: Add missing break statement (diff)
downloadlinux-7eada8a122a2683ec63ad43982a4552b054d59ca.tar.gz
linux-7eada8a122a2683ec63ad43982a4552b054d59ca.tar.bz2
linux-7eada8a122a2683ec63ad43982a4552b054d59ca.zip
serial: 8250_em: Use devm_clk_get_enabled()
Simplify clk handling in probe() by replacing devm_clk_get()->devm_ clk_get_enabled(). This replaces the usage of clk_prepare_enable/clk_ disable_unprepare() in probe()/remove(). After that sclk is no longer required in struct serial8250_em_priv and is replaced by a local variable sclk in probe(). Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com> Link: https://lore.kernel.org/r/20230227114152.22265-6-biju.das.jz@bp.renesas.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r--drivers/tty/serial/8250/8250_em.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/tty/serial/8250/8250_em.c b/drivers/tty/serial/8250/8250_em.c
index 621abca93694..dcf1761e8ef5 100644
--- a/drivers/tty/serial/8250/8250_em.c
+++ b/drivers/tty/serial/8250/8250_em.c
@@ -20,7 +20,6 @@
#define UART_DLM_EM 10
struct serial8250_em_priv {
- struct clk *sclk;
int line;
};
@@ -82,6 +81,7 @@ static int serial8250_em_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct uart_8250_port up;
struct resource *regs;
+ struct clk *sclk;
int irq, ret;
irq = platform_get_irq(pdev, 0);
@@ -96,9 +96,9 @@ static int serial8250_em_probe(struct platform_device *pdev)
if (!priv)
return -ENOMEM;
- priv->sclk = devm_clk_get(dev, "sclk");
- if (IS_ERR(priv->sclk))
- return dev_err_probe(dev, PTR_ERR(priv->sclk), "unable to get clock\n");
+ sclk = devm_clk_get_enabled(dev, "sclk");
+ if (IS_ERR(sclk))
+ return dev_err_probe(dev, PTR_ERR(sclk), "unable to get clock\n");
memset(&up, 0, sizeof(up));
up.port.mapbase = regs->start;
@@ -108,8 +108,7 @@ static int serial8250_em_probe(struct platform_device *pdev)
up.port.dev = dev;
up.port.private_data = priv;
- clk_prepare_enable(priv->sclk);
- up.port.uartclk = clk_get_rate(priv->sclk);
+ up.port.uartclk = clk_get_rate(sclk);
up.port.iotype = UPIO_MEM32;
up.port.serial_in = serial8250_em_serial_in;
@@ -118,10 +117,8 @@ static int serial8250_em_probe(struct platform_device *pdev)
up.dl_write = serial8250_em_serial_dl_write;
ret = serial8250_register_8250_port(&up);
- if (ret < 0) {
- clk_disable_unprepare(priv->sclk);
+ if (ret < 0)
return dev_err_probe(dev, ret, "unable to register 8250 port\n");
- }
priv->line = ret;
platform_set_drvdata(pdev, priv);
@@ -133,7 +130,6 @@ static int serial8250_em_remove(struct platform_device *pdev)
struct serial8250_em_priv *priv = platform_get_drvdata(pdev);
serial8250_unregister_port(priv->line);
- clk_disable_unprepare(priv->sclk);
return 0;
}