lkml.org 
[lkml]   [2023]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v1 6/8] ALSA: hda: cs35l41: Do not unload firmware before reset in system suspend
    Date
    Given the part is about to reset due to system suspend, and we are
    already in hibernate, there is no need to wake up the amp, just to get
    it ready to be reset. We just need to ensure cs_dsp is ready for reset
    by resetting the states.

    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    ---
    sound/pci/hda/cs35l41_hda.c | 33 ++++-----------------------------
    1 file changed, 4 insertions(+), 29 deletions(-)

    diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c
    index 9746c64ff0dd..69303888be1a 100644
    --- a/sound/pci/hda/cs35l41_hda.c
    +++ b/sound/pci/hda/cs35l41_hda.c
    @@ -760,41 +760,16 @@ int cs35l41_verify_id(struct cs35l41_hda *cs35l41, unsigned int *regid, unsigned

    static int cs35l41_ready_for_reset(struct cs35l41_hda *cs35l41)
    {
    - int ret = 0;
    -
    mutex_lock(&cs35l41->fw_mutex);
    if (cs35l41->firmware_running) {
    -
    - regcache_cache_only(cs35l41->regmap, false);
    -
    - ret = cs35l41_exit_hibernate(cs35l41->dev, cs35l41->regmap);
    - if (ret) {
    - dev_warn(cs35l41->dev, "Unable to exit Hibernate.");
    - goto err;
    - }
    -
    - /* Test key needs to be unlocked to allow the OTP settings to re-apply */
    - cs35l41_test_key_unlock(cs35l41->dev, cs35l41->regmap);
    - ret = regcache_sync(cs35l41->regmap);
    - cs35l41_test_key_lock(cs35l41->dev, cs35l41->regmap);
    - if (ret) {
    - dev_err(cs35l41->dev, "Failed to restore register cache: %d\n", ret);
    - goto err;
    - }
    -
    - if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST)
    - cs35l41_init_boost(cs35l41->dev, cs35l41->regmap, &cs35l41->hw_cfg);
    -
    - cs35l41_shutdown_dsp(cs35l41);
    - cs35l41_safe_reset(cs35l41->regmap, cs35l41->hw_cfg.bst_type);
    + cs35l41->cs_dsp.running = false;
    + cs35l41->cs_dsp.booted = false;
    + cs35l41->firmware_running = false;
    }
    -err:
    - regcache_cache_only(cs35l41->regmap, true);
    regcache_mark_dirty(cs35l41->regmap);
    -
    mutex_unlock(&cs35l41->fw_mutex);

    - return ret;
    + return 0;
    }

    static int cs35l41_system_suspend_prep(struct device *dev)
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-10-26 17:08    [W:3.100 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site