Unverified Commit 450312b6 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown
Browse files

ASoC: soc-core: remove DAI suspend/resume



Historically, CPU and Codec were implemented different, but now it is
merged as Component.
ALSA SoC is supporting suspend/resume at DAI and Component level.
The method is like below.

	1) Suspend/Resume all CPU DAI if bus-control was 0
	2) Suspend/Resume all Component
	3) Suspend/Resume all CPU DAI if bus-control was 1

Historically 2) was Codec special operation.
Because CPU and Codec were merged into Component,
CPU   suspend/resume has 3 chance to suspend(= 1/2/3), but
Codec suspend/resume has 1 chance (= 2).

Here, DAI side suspend/resume is caring bus-control, but no driver
which is supporting suspend/resume is setting bus-control.
This means 3) was never used.

Here, used parameter for suspend/resume component->dev and dai->dev are
same pointer.
For that reason, we can merge DAI and Component suspend/resume.
One note is that we should use 2), because it is caring BIAS level.

This patch removes 1) and 3).

Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87r1zvx7i8.wl-kuninori.morimoto.gx@renesas.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0b1c8994
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -286,8 +286,6 @@ struct snd_soc_dai_driver {
	/* DAI driver callbacks */
	int (*probe)(struct snd_soc_dai *dai);
	int (*remove)(struct snd_soc_dai *dai);
	int (*suspend)(struct snd_soc_dai *dai);
	int (*resume)(struct snd_soc_dai *dai);
	/* compress dai */
	int (*compress_new)(struct snd_soc_pcm_runtime *rtd, int num);
	/* Optional Callback used at pcm creation*/
+0 −41
Original line number Diff line number Diff line
@@ -558,16 +558,6 @@ int snd_soc_suspend(struct device *dev)
	if (card->suspend_pre)
		card->suspend_pre(card);

	for_each_card_rtds(card, rtd) {
		struct snd_soc_dai *cpu_dai = rtd->cpu_dai;

		if (rtd->dai_link->ignore_suspend)
			continue;

		if (!cpu_dai->driver->bus_control)
			snd_soc_dai_suspend(cpu_dai);
	}

	/* close any waiting streams */
	snd_soc_flush_all_delayed_work(card);

@@ -639,16 +629,6 @@ int snd_soc_suspend(struct device *dev)
		}
	}

	for_each_card_rtds(card, rtd) {
		struct snd_soc_dai *cpu_dai = rtd->cpu_dai;

		if (rtd->dai_link->ignore_suspend)
			continue;

		if (cpu_dai->driver->bus_control)
			snd_soc_dai_suspend(cpu_dai);
	}

	if (card->suspend_post)
		card->suspend_post(card);

@@ -682,17 +662,6 @@ static void soc_resume_deferred(struct work_struct *work)
	if (card->resume_pre)
		card->resume_pre(card);

	/* resume control bus DAIs */
	for_each_card_rtds(card, rtd) {
		struct snd_soc_dai *cpu_dai = rtd->cpu_dai;

		if (rtd->dai_link->ignore_suspend)
			continue;

		if (cpu_dai->driver->bus_control)
			snd_soc_dai_resume(cpu_dai);
	}

	for_each_card_components(card, component) {
		if (snd_soc_component_is_suspended(component))
			snd_soc_component_resume(component);
@@ -726,16 +695,6 @@ static void soc_resume_deferred(struct work_struct *work)
		}
	}

	for_each_card_rtds(card, rtd) {
		struct snd_soc_dai *cpu_dai = rtd->cpu_dai;

		if (rtd->dai_link->ignore_suspend)
			continue;

		if (!cpu_dai->driver->bus_control)
			snd_soc_dai_resume(cpu_dai);
	}

	if (card->resume_post)
		card->resume_post(card);

+0 −12
Original line number Diff line number Diff line
@@ -354,18 +354,6 @@ snd_pcm_sframes_t snd_soc_dai_delay(struct snd_soc_dai *dai,
	return delay;
}

void snd_soc_dai_suspend(struct snd_soc_dai *dai)
{
	if (dai->driver->suspend)
		dai->driver->suspend(dai);
}

void snd_soc_dai_resume(struct snd_soc_dai *dai)
{
	if (dai->driver->resume)
		dai->driver->resume(dai);
}

int snd_soc_dai_probe(struct snd_soc_dai *dai)
{
	if (dai->driver->probe)