From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH/RESEND 02/12] msm_serial: Use devm_clk_get() and properly return errors
Date: Mon, 17 Jun 2013 10:43:09 -0700 [thread overview]
Message-ID: <1371490999-15501-3-git-send-email-sboyd@codeaurora.org> (raw)
In-Reply-To: <1371490999-15501-1-git-send-email-sboyd@codeaurora.org>
Clocks are not clk_put() in this driver's error paths during
probe. The code that checks for clock errors also fails to
properly return the error code from the pclk member if it turns
out to be the failing clock, leading to potentially confusing
error values if the clk member is not an error pointer. Fix these
problems with devm_clk_get() and proper error checking.
Removing the clk_put() in msm_serial_remove() also points out
that msm_port is unused. Furthermore, msm_port is the wrong type
and so the clk_put() would be using the wrong pointer. Replace it
with the proper type and call uart_remove_one_port() to do the
proper cleanup.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
drivers/tty/serial/msm_serial.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index 0149603..2c6cfb3 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -884,19 +884,22 @@ static int __init msm_serial_probe(struct platform_device *pdev)
msm_port->is_uartdm = 0;
if (msm_port->is_uartdm) {
- msm_port->clk = clk_get(&pdev->dev, "gsbi_uart_clk");
- msm_port->pclk = clk_get(&pdev->dev, "gsbi_pclk");
+ msm_port->clk = devm_clk_get(&pdev->dev, "gsbi_uart_clk");
+ msm_port->pclk = devm_clk_get(&pdev->dev, "gsbi_pclk");
} else {
- msm_port->clk = clk_get(&pdev->dev, "uart_clk");
+ msm_port->clk = devm_clk_get(&pdev->dev, "uart_clk");
msm_port->pclk = ERR_PTR(-ENOENT);
}
- if (unlikely(IS_ERR(msm_port->clk) || (IS_ERR(msm_port->pclk) &&
- msm_port->is_uartdm)))
- return PTR_ERR(msm_port->clk);
+ if (IS_ERR(msm_port->clk))
+ return PTR_ERR(msm_port->clk);
+
+ if (msm_port->is_uartdm) {
+ if (IS_ERR(msm_port->pclk))
+ return PTR_ERR(msm_port->pclk);
- if (msm_port->is_uartdm)
clk_set_rate(msm_port->clk, 1843200);
+ }
port->uartclk = clk_get_rate(msm_port->clk);
printk(KERN_INFO "uartclk = %d\n", port->uartclk);
@@ -919,9 +922,9 @@ static int __init msm_serial_probe(struct platform_device *pdev)
static int msm_serial_remove(struct platform_device *pdev)
{
- struct msm_port *msm_port = platform_get_drvdata(pdev);
+ struct uart_port *port = platform_get_drvdata(pdev);
- clk_put(msm_port->clk);
+ uart_remove_one_port(&msm_uart_driver, port);
return 0;
}
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
next prev parent reply other threads:[~2013-06-17 17:43 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-17 17:43 [PATCH/RESEND 00/12] Convert MSM to common clock framework Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 01/12] msm_serial: Convert to clk_prepare/unprepare Stephen Boyd
2013-06-17 17:55 ` Greg Kroah-Hartman
2013-06-17 18:07 ` David Brown
2013-06-17 18:27 ` Greg Kroah-Hartman
2013-06-17 17:43 ` Stephen Boyd [this message]
2013-06-17 17:55 ` [PATCH/RESEND 02/12] msm_serial: Use devm_clk_get() and properly return errors Greg Kroah-Hartman
2013-06-17 17:43 ` [PATCH/RESEND 03/12] usb: otg: msm: Convert to clk_prepare/unprepare Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 04/12] msm_sdcc: " Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 05/12] msm: iommu: " Stephen Boyd
2013-06-20 16:40 ` Stephen Boyd
2013-06-20 17:04 ` Joerg Roedel
2013-06-17 17:43 ` [PATCH/RESEND 06/12] msm: iommu: Use clk_set_rate() instead of clk_set_min_rate() Stephen Boyd
2013-06-20 16:41 ` Stephen Boyd
2013-06-20 17:04 ` Joerg Roedel
2013-06-17 17:43 ` [PATCH/RESEND 07/12] ARM: msm: Remove custom clk_set_flags() API Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 08/12] ARM: msm: Remove custom clk_set_{max, min}_rate() API Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 09/12] ARM: msm: Remove clock-7x30.h include file Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 10/12] ARM: msm: Prepare clk_get() users in mach-msm for clock-pcom driver Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 11/12] ARM: msm: Make proc_comm clock control into a platform driver Stephen Boyd
2013-06-19 16:34 ` Stephen Boyd
2013-06-17 17:43 ` [PATCH/RESEND 12/12] ARM: msm: Migrate to common clock framework Stephen Boyd
2013-06-21 1:29 ` [PATCH/RESEND 00/12] Convert MSM " Stephen Boyd
2013-06-24 20:10 ` David Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1371490999-15501-3-git-send-email-sboyd@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).