lkml.org 
[lkml]   [2020]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/13] soundwire: intel: reset pm_runtime status during system resume
    Date
    From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>

    The system resume does the entire bus re-initialization and brings it
    to full-power. If the device was pm_runtime suspended, there is no
    need to run the pm_runtime resume sequence after the system runtime.

    Follow the documentation from runtime_pm.rst, and conditionally
    disable, set_active and re-enable the device on system resume.

    Note that pm_runtime_suspended() is used instead of
    pm_runtime_status_suspended() so that we can deal with the case where
    pm_runtime is disabled.

    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    ---
    drivers/soundwire/intel.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)

    diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c
    index ed7163ae5f7a..284e5c9d240a 100644
    --- a/drivers/soundwire/intel.c
    +++ b/drivers/soundwire/intel.c
    @@ -1433,6 +1433,14 @@ static int intel_suspend(struct device *dev)
    return 0;
    }

    + if (pm_runtime_suspended(dev)) {
    + dev_dbg(dev,
    + "%s: pm_runtime status: suspended\n",
    + __func__);
    +
    + return 0;
    + }
    +
    ret = sdw_cdns_enable_interrupt(cdns, false);
    if (ret < 0) {
    dev_err(dev, "cannot disable interrupts on suspend\n");
    @@ -1493,6 +1501,18 @@ static int intel_resume(struct device *dev)
    return 0;
    }

    + if (pm_runtime_suspended(dev)) {
    + dev_dbg(dev,
    + "%s: pm_runtime status was suspended, forcing active\n",
    + __func__);
    +
    + /* follow required sequence from runtime_pm.rst */
    + pm_runtime_disable(dev);
    + pm_runtime_set_active(dev);
    + pm_runtime_mark_last_busy(dev);
    + pm_runtime_enable(dev);
    + }
    +
    ret = intel_init(sdw);
    if (ret) {
    dev_err(dev, "%s failed: %d", __func__, ret);
    --
    2.17.1
    \
     
     \ /
      Last update: 2020-07-22 10:33    [W:3.158 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site