Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9308d145 authored by Vinod Koul's avatar Vinod Koul Committed by Mark Brown
Browse files

ASoC: Intel: Move the fw download to power_control



Thus removing the runtime_resume handler.

Signed-off-by: default avatarSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4a8448d4
Loading
Loading
Loading
Loading
+1 −17
Original line number Diff line number Diff line
@@ -492,21 +492,6 @@ static int intel_sst_suspend(struct device *dev)
	return ret;
}

static int intel_sst_runtime_resume(struct device *dev)
{
	int ret = 0;
	struct intel_sst_drv *ctx = dev_get_drvdata(dev);

	if (ctx->sst_state == SST_RESET) {
		ret = sst_load_fw(ctx);
		if (ret) {
			dev_err(dev, "FW download fail %d\n", ret);
			sst_set_fw_state_locked(ctx, SST_RESET);
		}
	}
	return ret;
}

static int intel_sst_resume(struct device *dev)
{
	struct intel_sst_drv *ctx = dev_get_drvdata(dev);
@@ -515,7 +500,7 @@ static int intel_sst_resume(struct device *dev)
	struct sst_block *block;

	if (!fw_save)
		return intel_sst_runtime_resume(dev);
		return 0;

	sst_set_fw_state_locked(ctx, SST_FW_LOADING);

@@ -560,6 +545,5 @@ const struct dev_pm_ops intel_sst_pm = {
	.suspend = intel_sst_suspend,
	.resume = intel_sst_resume,
	.runtime_suspend = intel_sst_runtime_suspend,
	.runtime_resume = intel_sst_runtime_resume,
};
EXPORT_SYMBOL_GPL(intel_sst_pm);
+23 −4
Original line number Diff line number Diff line
@@ -138,13 +138,32 @@ int sst_get_stream(struct intel_sst_drv *ctx,
static int sst_power_control(struct device *dev, bool state)
{
	struct intel_sst_drv *ctx = dev_get_drvdata(dev);
	int ret = 0;

	dev_dbg(ctx->dev, "state:%d", state);
	if (state == true)
		return pm_runtime_get_sync(dev);
	else
	if (state == true) {
		ret = pm_runtime_get_sync(dev);
		dev_dbg(ctx->dev, "Enable: pm usage count: %d\n",
				atomic_read(&dev->power.usage_count));
		if (ret < 0) {
			dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret);
			return ret;
		}
		if ((ctx->sst_state == SST_RESET) &&
			(atomic_read(&dev->power.usage_count) == 1)) {
			ret = sst_load_fw(ctx);
			if (ret) {
				dev_err(dev, "FW download fail %d\n", ret);
				sst_set_fw_state_locked(ctx, SST_RESET);
				ret = sst_pm_runtime_put(ctx);
			}
		}
	} else {
		dev_dbg(ctx->dev, "Disable: pm usage count: %d\n",
				atomic_read(&dev->power.usage_count));
		return sst_pm_runtime_put(ctx);
	}
	return ret;
}

/*
 * sst_open_pcm_stream - Open PCM interface