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-4.4/drivers/rtc/rtc-tegra.c

    r28606 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;
     
    333335                return -EBUSY;
    334336
     337        info->clk = devm_clk_get(&pdev->dev, NULL);
     338        if (IS_ERR(info->clk))
     339                return PTR_ERR(info->clk);
     340
     341        ret = clk_prepare_enable(info->clk);
     342        if (ret < 0)
     343                return ret;
     344
    335345        /* set context info. */
    336346        info->pdev = pdev;
     
    353363                dev_err(&pdev->dev, "Unable to register device (err=%d).\n",
    354364                        ret);
    355                 return ret;
     365                goto disable_clk;
    356366        }
    357367
     
    363373                        "Unable to request interrupt for device (err=%d).\n",
    364374                        ret);
    365                 return ret;
     375                goto disable_clk;
    366376        }
    367377
    368378        dev_notice(&pdev->dev, "Tegra internal Real Time Clock\n");
     379
     380        return 0;
     381
     382disable_clk:
     383        clk_disable_unprepare(info->clk);
     384        return ret;
     385}
     386
     387static int tegra_rtc_remove(struct platform_device *pdev)
     388{
     389        struct tegra_rtc_info *info = platform_get_drvdata(pdev);
     390
     391        clk_disable_unprepare(info->clk);
    369392
    370393        return 0;
     
    420443MODULE_ALIAS("platform:tegra_rtc");
    421444static struct platform_driver tegra_rtc_driver = {
     445        .remove         = tegra_rtc_remove,
    422446        .shutdown       = tegra_rtc_shutdown,
    423447        .driver         = {
Note: See TracChangeset for help on using the changeset viewer.