lkml.org 
[lkml]   [2019]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/6] thermal: qoriq: Add clock operations
    Date
    From: Anson Huang <Anson.Huang@nxp.com>

    Some platforms like i.MX8MQ has clock control for this module,
    need to add clock operations to make sure the driver is working
    properly.

    Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
    ---
    drivers/thermal/qoriq_thermal.c | 24 ++++++++++++++++++++++++
    1 file changed, 24 insertions(+)

    diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c
    index 2b2f79b..0813c1b 100644
    --- a/drivers/thermal/qoriq_thermal.c
    +++ b/drivers/thermal/qoriq_thermal.c
    @@ -2,6 +2,7 @@
    //
    // Copyright 2016 Freescale Semiconductor, Inc.

    +#include <linux/clk.h>
    #include <linux/module.h>
    #include <linux/platform_device.h>
    #include <linux/err.h>
    @@ -72,6 +73,7 @@ struct qoriq_sensor {

    struct qoriq_tmu_data {
    struct qoriq_tmu_regs __iomem *regs;
    + struct clk *clk;
    bool little_endian;
    struct qoriq_sensor *sensor[SITES_MAX];
    };
    @@ -208,6 +210,19 @@ static int qoriq_tmu_probe(struct platform_device *pdev)
    return PTR_ERR(data->regs);
    }

    + data->clk = devm_clk_get(&pdev->dev, NULL);
    + if (IS_ERR(data->clk)) {
    + if (PTR_ERR(data->clk) == -EPROBE_DEFER)
    + return -EPROBE_DEFER;
    + data->clk = NULL;
    + }
    +
    + ret = clk_prepare_enable(data->clk);
    + if (ret) {
    + dev_err(&pdev->dev, "Failed to enable clock\n");
    + return ret;
    + }
    +
    qoriq_tmu_init_device(data); /* TMU initialization */

    ret = qoriq_tmu_calibration(pdev); /* TMU calibration */
    @@ -235,6 +250,8 @@ static int qoriq_tmu_remove(struct platform_device *pdev)
    /* Disable monitoring */
    tmu_write(data, TMR_DISABLE, &data->regs->tmr);

    + clk_disable_unprepare(data->clk);
    +
    platform_set_drvdata(pdev, NULL);

    return 0;
    @@ -250,14 +267,21 @@ static int __maybe_unused qoriq_tmu_suspend(struct device *dev)
    tmr &= ~TMR_ME;
    tmu_write(data, tmr, &data->regs->tmr);

    + clk_disable_unprepare(data->clk);
    +
    return 0;
    }

    static int __maybe_unused qoriq_tmu_resume(struct device *dev)
    {
    u32 tmr;
    + int ret;
    struct qoriq_tmu_data *data = dev_get_drvdata(dev);

    + ret = clk_prepare_enable(data->clk);
    + if (ret)
    + return ret;
    +
    /* Enable monitoring */
    tmr = tmu_read(data, &data->regs->tmr);
    tmr |= TMR_ME;
    --
    2.7.4
    \
     
     \ /
      Last update: 2019-07-05 07:06    [W:4.327 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site