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: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/87r1zvx7i8.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
0b1c899442
commit
450312b640
@ -286,8 +286,6 @@ struct snd_soc_dai_driver {
|
|||||||
/* DAI driver callbacks */
|
/* DAI driver callbacks */
|
||||||
int (*probe)(struct snd_soc_dai *dai);
|
int (*probe)(struct snd_soc_dai *dai);
|
||||||
int (*remove)(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 */
|
/* compress dai */
|
||||||
int (*compress_new)(struct snd_soc_pcm_runtime *rtd, int num);
|
int (*compress_new)(struct snd_soc_pcm_runtime *rtd, int num);
|
||||||
/* Optional Callback used at pcm creation*/
|
/* Optional Callback used at pcm creation*/
|
||||||
|
@ -558,16 +558,6 @@ int snd_soc_suspend(struct device *dev)
|
|||||||
if (card->suspend_pre)
|
if (card->suspend_pre)
|
||||||
card->suspend_pre(card);
|
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 */
|
/* close any waiting streams */
|
||||||
snd_soc_flush_all_delayed_work(card);
|
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)
|
if (card->suspend_post)
|
||||||
card->suspend_post(card);
|
card->suspend_post(card);
|
||||||
|
|
||||||
@ -682,17 +662,6 @@ static void soc_resume_deferred(struct work_struct *work)
|
|||||||
if (card->resume_pre)
|
if (card->resume_pre)
|
||||||
card->resume_pre(card);
|
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) {
|
for_each_card_components(card, component) {
|
||||||
if (snd_soc_component_is_suspended(component))
|
if (snd_soc_component_is_suspended(component))
|
||||||
snd_soc_component_resume(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)
|
if (card->resume_post)
|
||||||
card->resume_post(card);
|
card->resume_post(card);
|
||||||
|
|
||||||
|
@ -354,18 +354,6 @@ snd_pcm_sframes_t snd_soc_dai_delay(struct snd_soc_dai *dai,
|
|||||||
return delay;
|
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)
|
int snd_soc_dai_probe(struct snd_soc_dai *dai)
|
||||||
{
|
{
|
||||||
if (dai->driver->probe)
|
if (dai->driver->probe)
|
||||||
|
Loading…
Reference in New Issue
Block a user