Skip to content

Commit

Permalink
ASoC: codecs: wcd938x-sdw: fix runtime PM imbalance on probe errors
Browse files Browse the repository at this point in the history
Make sure to balance the runtime PM operations, including the disable
count, on probe errors and on driver unbind.

Fixes: 1657252 ("ASoC: codecs: wcd938x-sdw: add SoundWire driver")
Cc: stable@vger.kernel.org      # 5.14
Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20231003155558.27079-8-johan+linaro@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Johan Hovold authored and Mark Brown committed Oct 9, 2023
1 parent f0dfdcb commit c5c0383
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion sound/soc/codecs/wcd938x-sdw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1278,7 +1278,18 @@ static int wcd9380_probe(struct sdw_slave *pdev,
pm_runtime_set_active(dev);
pm_runtime_enable(dev);

return component_add(dev, &wcd938x_sdw_component_ops);
ret = component_add(dev, &wcd938x_sdw_component_ops);
if (ret)
goto err_disable_rpm;

return 0;

err_disable_rpm:
pm_runtime_disable(dev);
pm_runtime_set_suspended(dev);
pm_runtime_dont_use_autosuspend(dev);

return ret;
}

static int wcd9380_remove(struct sdw_slave *pdev)
Expand All @@ -1287,6 +1298,10 @@ static int wcd9380_remove(struct sdw_slave *pdev)

component_del(dev, &wcd938x_sdw_component_ops);

pm_runtime_disable(dev);
pm_runtime_set_suspended(dev);
pm_runtime_dont_use_autosuspend(dev);

return 0;
}

Expand Down

0 comments on commit c5c0383

Please sign in to comment.