Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (3 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.18/drivers/rtc/rtc-tegra.c

    r25370 r31885  
    1919 */
    2020#include <linux/kernel.h>
     21#include <linux/clk.h>
    2122#include <linux/init.h>
    2223#include <linux/module.h>
     
    6061        struct rtc_device       *rtc_dev;
    6162        void __iomem            *rtc_base; /* NULL if not initialized. */
     63        struct clk              *clk;
    6264        int                     tegra_rtc_irq; /* alarm and periodic irq */
    6365        spinlock_t              tegra_rtc_lock;
     
    331333                return -EBUSY;
    332334
     335        info->clk = devm_clk_get(&pdev->dev, NULL);
     336        if (IS_ERR(info->clk))
     337                return PTR_ERR(info->clk);
     338
     339        ret = clk_prepare_enable(info->clk);
     340        if (ret < 0)
     341                return ret;
     342
    333343        /* set context info. */
    334344        info->pdev = pdev;
     
    351361                dev_err(&pdev->dev, "Unable to register device (err=%d).\n",
    352362                        ret);
    353                 return ret;
     363                goto disable_clk;
    354364        }
    355365
     
    361371                        "Unable to request interrupt for device (err=%d).\n",
    362372                        ret);
    363                 return ret;
     373                goto disable_clk;
    364374        }
    365375
    366376        dev_notice(&pdev->dev, "Tegra internal Real Time Clock\n");
     377
     378        return 0;
     379
     380disable_clk:
     381        clk_disable_unprepare(info->clk);
     382        return ret;
     383}
     384
     385static int tegra_rtc_remove(struct platform_device *pdev)
     386{
     387        struct tegra_rtc_info *info = platform_get_drvdata(pdev);
     388
     389        clk_disable_unprepare(info->clk);
    367390
    368391        return 0;
     
    418441MODULE_ALIAS("platform:tegra_rtc");
    419442static struct platform_driver tegra_rtc_driver = {
     443        .remove         = tegra_rtc_remove,
    420444        .shutdown       = tegra_rtc_shutdown,
    421445        .driver         = {
Note: See TracChangeset for help on using the changeset viewer.