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

update

File:
1 edited

Legend:

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

    r31574 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;
     
    327329                return -EBUSY;
    328330
     331        info->clk = devm_clk_get(&pdev->dev, NULL);
     332        if (IS_ERR(info->clk))
     333                return PTR_ERR(info->clk);
     334
     335        ret = clk_prepare_enable(info->clk);
     336        if (ret < 0)
     337                return ret;
     338
    329339        /* set context info. */
    330340        info->pdev = pdev;
     
    347357                dev_err(&pdev->dev, "Unable to register device (err=%d).\n",
    348358                        ret);
    349                 return ret;
     359                goto disable_clk;
    350360        }
    351361
     
    357367                        "Unable to request interrupt for device (err=%d).\n",
    358368                        ret);
    359                 return ret;
     369                goto disable_clk;
    360370        }
    361371
    362372        dev_notice(&pdev->dev, "Tegra internal Real Time Clock\n");
     373
     374        return 0;
     375
     376disable_clk:
     377        clk_disable_unprepare(info->clk);
     378        return ret;
     379}
     380
     381static int tegra_rtc_remove(struct platform_device *pdev)
     382{
     383        struct tegra_rtc_info *info = platform_get_drvdata(pdev);
     384
     385        clk_disable_unprepare(info->clk);
    363386
    364387        return 0;
     
    414437MODULE_ALIAS("platform:tegra_rtc");
    415438static struct platform_driver tegra_rtc_driver = {
     439        .remove         = tegra_rtc_remove,
    416440        .shutdown       = tegra_rtc_shutdown,
    417441        .driver         = {
Note: See TracChangeset for help on using the changeset viewer.