Skip to content

Commit

Permalink
rtc-mxc: remove unnecessary clock source for rtc subsystem
Browse files Browse the repository at this point in the history
On imx SoCs rtc clock parent is CKIL, but clock rate shall be determined
using rtc clock itself, that eliminates CKIL clock usage in the driver.

Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Daniel Mack <daniel@caiaq.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Paul Gortmaker <p_gortmaker@yahoo.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Vladimir Zapolskiy authored and Linus Torvalds committed May 25, 2010
1 parent 9f4123b commit 5cf8f57
Showing 1 changed file with 8 additions and 17 deletions.
25 changes: 8 additions & 17 deletions drivers/rtc/rtc-mxc.c
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,6 @@ static struct rtc_class_ops mxc_rtc_ops = {

static int __init mxc_rtc_probe(struct platform_device *pdev)
{
struct clk *clk;
struct resource *res;
struct rtc_device *rtc;
struct rtc_plat_data *pdata = NULL;
Expand All @@ -402,14 +401,15 @@ static int __init mxc_rtc_probe(struct platform_device *pdev)
pdata->ioaddr = devm_ioremap(&pdev->dev, res->start,
resource_size(res));

clk = clk_get(&pdev->dev, "ckil");
if (IS_ERR(clk)) {
ret = PTR_ERR(clk);
pdata->clk = clk_get(&pdev->dev, "rtc");
if (IS_ERR(pdata->clk)) {
dev_err(&pdev->dev, "unable to get clock!\n");
ret = PTR_ERR(pdata->clk);
goto exit_free_pdata;
}

rate = clk_get_rate(clk);
clk_put(clk);
clk_enable(pdata->clk);
rate = clk_get_rate(pdata->clk);

if (rate == 32768)
reg = RTC_INPUT_CLK_32768HZ;
Expand All @@ -420,26 +420,17 @@ static int __init mxc_rtc_probe(struct platform_device *pdev)
else {
dev_err(&pdev->dev, "rtc clock is not valid (%lu)\n", rate);
ret = -EINVAL;
goto exit_free_pdata;
goto exit_put_clk;
}

reg |= RTC_ENABLE_BIT;
writew(reg, (pdata->ioaddr + RTC_RTCCTL));
if (((readw(pdata->ioaddr + RTC_RTCCTL)) & RTC_ENABLE_BIT) == 0) {
dev_err(&pdev->dev, "hardware module can't be enabled!\n");
ret = -EIO;
goto exit_free_pdata;
}

pdata->clk = clk_get(&pdev->dev, "rtc");
if (IS_ERR(pdata->clk)) {
dev_err(&pdev->dev, "unable to get clock!\n");
ret = PTR_ERR(pdata->clk);
goto exit_free_pdata;
goto exit_put_clk;
}

clk_enable(pdata->clk);

rtc = rtc_device_register(pdev->name, &pdev->dev, &mxc_rtc_ops,
THIS_MODULE);
if (IS_ERR(rtc)) {
Expand Down

0 comments on commit 5cf8f57

Please sign in to comment.