2014-10-15 11:27:48

by Marek Szyprowski

[permalink] [raw]
Subject: [PATCH] drivers: rtc: fix s3c-rtc initialization failure without rtc source clock

This patch fixes unconditional initialization failure on non-exynos3250
SoCs. Commit df9e26d093d33a097c5558aab017dd2f540ccfe5 ("rtc: s3c: add support for RTC of Exynos3250 SoC") introduced rtc source clock support,
but also added initialization failure on SoCs, which doesn't need such
clock.

Signed-off-by: Marek Szyprowski <[email protected]>
---
drivers/rtc/rtc-s3c.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
index a6b1252c9941..806072238c00 100644
--- a/drivers/rtc/rtc-s3c.c
+++ b/drivers/rtc/rtc-s3c.c
@@ -535,13 +535,15 @@ static int s3c_rtc_probe(struct platform_device *pdev)
}
clk_prepare_enable(info->rtc_clk);

- info->rtc_src_clk = devm_clk_get(&pdev->dev, "rtc_src");
- if (IS_ERR(info->rtc_src_clk)) {
- dev_err(&pdev->dev, "failed to find rtc source clock\n");
- return PTR_ERR(info->rtc_src_clk);
+ if (info->data->needs_src_clk) {
+ info->rtc_src_clk = devm_clk_get(&pdev->dev, "rtc_src");
+ if (IS_ERR(info->rtc_src_clk)) {
+ dev_err(&pdev->dev,
+ "failed to find rtc source clock\n");
+ return PTR_ERR(info->rtc_src_clk);
+ }
+ clk_prepare_enable(info->rtc_src_clk);
}
- clk_prepare_enable(info->rtc_src_clk);
-

/* check to see if everything is setup correctly */
if (info->data->enable)
--
1.9.2


2014-10-16 02:25:40

by Chanwoo Choi

[permalink] [raw]
Subject: Re: [PATCH] drivers: rtc: fix s3c-rtc initialization failure without rtc source clock

On 10/15/2014 08:27 PM, Marek Szyprowski wrote:
> This patch fixes unconditional initialization failure on non-exynos3250
> SoCs. Commit df9e26d093d33a097c5558aab017dd2f540ccfe5 ("rtc: s3c: add support for RTC of Exynos3250 SoC") introduced rtc source clock support,
> but also added initialization failure on SoCs, which doesn't need such
> clock.
>
> Signed-off-by: Marek Szyprowski <[email protected]>
> ---
> drivers/rtc/rtc-s3c.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
> index a6b1252c9941..806072238c00 100644
> --- a/drivers/rtc/rtc-s3c.c
> +++ b/drivers/rtc/rtc-s3c.c
> @@ -535,13 +535,15 @@ static int s3c_rtc_probe(struct platform_device *pdev)
> }
> clk_prepare_enable(info->rtc_clk);
>
> - info->rtc_src_clk = devm_clk_get(&pdev->dev, "rtc_src");
> - if (IS_ERR(info->rtc_src_clk)) {
> - dev_err(&pdev->dev, "failed to find rtc source clock\n");
> - return PTR_ERR(info->rtc_src_clk);
> + if (info->data->needs_src_clk) {
> + info->rtc_src_clk = devm_clk_get(&pdev->dev, "rtc_src");
> + if (IS_ERR(info->rtc_src_clk)) {
> + dev_err(&pdev->dev,
> + "failed to find rtc source clock\n");
> + return PTR_ERR(info->rtc_src_clk);
> + }
> + clk_prepare_enable(info->rtc_src_clk);
> }
> - clk_prepare_enable(info->rtc_src_clk);
> -
>
> /* check to see if everything is setup correctly */
> if (info->data->enable)
>

Reviewed-by: Chanwoo Choi <[email protected]>

Thanks,
Chanwoo Choi