|
@@ -550,7 +550,7 @@ int snd_soc_suspend(struct device *dev)
|
|
|
if (card->rtd[i].dai_link->ignore_suspend)
|
|
|
continue;
|
|
|
|
|
|
- if (cpu_dai->driver->suspend && !cpu_dai->driver->ac97_control)
|
|
|
+ if (cpu_dai->driver->suspend && !cpu_dai->driver->bus_control)
|
|
|
cpu_dai->driver->suspend(cpu_dai);
|
|
|
if (platform->driver->suspend && !platform->suspended) {
|
|
|
platform->driver->suspend(cpu_dai);
|
|
@@ -629,7 +629,7 @@ int snd_soc_suspend(struct device *dev)
|
|
|
if (card->rtd[i].dai_link->ignore_suspend)
|
|
|
continue;
|
|
|
|
|
|
- if (cpu_dai->driver->suspend && cpu_dai->driver->ac97_control)
|
|
|
+ if (cpu_dai->driver->suspend && cpu_dai->driver->bus_control)
|
|
|
cpu_dai->driver->suspend(cpu_dai);
|
|
|
|
|
|
/* deactivate pins to sleep state */
|
|
@@ -665,14 +665,14 @@ static void soc_resume_deferred(struct work_struct *work)
|
|
|
if (card->resume_pre)
|
|
|
card->resume_pre(card);
|
|
|
|
|
|
- /* resume AC97 DAIs */
|
|
|
+ /* resume control bus DAIs */
|
|
|
for (i = 0; i < card->num_rtd; i++) {
|
|
|
struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
|
|
|
|
|
|
if (card->rtd[i].dai_link->ignore_suspend)
|
|
|
continue;
|
|
|
|
|
|
- if (cpu_dai->driver->resume && cpu_dai->driver->ac97_control)
|
|
|
+ if (cpu_dai->driver->resume && cpu_dai->driver->bus_control)
|
|
|
cpu_dai->driver->resume(cpu_dai);
|
|
|
}
|
|
|
|
|
@@ -733,7 +733,7 @@ static void soc_resume_deferred(struct work_struct *work)
|
|
|
if (card->rtd[i].dai_link->ignore_suspend)
|
|
|
continue;
|
|
|
|
|
|
- if (cpu_dai->driver->resume && !cpu_dai->driver->ac97_control)
|
|
|
+ if (cpu_dai->driver->resume && !cpu_dai->driver->bus_control)
|
|
|
cpu_dai->driver->resume(cpu_dai);
|
|
|
if (platform->driver->resume && platform->suspended) {
|
|
|
platform->driver->resume(cpu_dai);
|
|
@@ -758,7 +758,8 @@ static void soc_resume_deferred(struct work_struct *work)
|
|
|
int snd_soc_resume(struct device *dev)
|
|
|
{
|
|
|
struct snd_soc_card *card = dev_get_drvdata(dev);
|
|
|
- int i, ac97_control = 0;
|
|
|
+ bool bus_control = false;
|
|
|
+ int i;
|
|
|
|
|
|
/* If the card is not initialized yet there is nothing to do */
|
|
|
if (!card->instantiated)
|
|
@@ -781,17 +782,18 @@ int snd_soc_resume(struct device *dev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /* AC97 devices might have other drivers hanging off them so
|
|
|
- * need to resume immediately. Other drivers don't have that
|
|
|
- * problem and may take a substantial amount of time to resume
|
|
|
+ /*
|
|
|
+ * DAIs that also act as the control bus master might have other drivers
|
|
|
+ * hanging off them so need to resume immediately. Other drivers don't
|
|
|
+ * have that problem and may take a substantial amount of time to resume
|
|
|
* due to I/O costs and anti-pop so handle them out of line.
|
|
|
*/
|
|
|
for (i = 0; i < card->num_rtd; i++) {
|
|
|
struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
|
|
|
- ac97_control |= cpu_dai->driver->ac97_control;
|
|
|
+ bus_control |= cpu_dai->driver->bus_control;
|
|
|
}
|
|
|
- if (ac97_control) {
|
|
|
- dev_dbg(dev, "ASoC: Resuming AC97 immediately\n");
|
|
|
+ if (bus_control) {
|
|
|
+ dev_dbg(dev, "ASoC: Resuming control bus master immediately\n");
|
|
|
soc_resume_deferred(&card->deferred_resume_work);
|
|
|
} else {
|
|
|
dev_dbg(dev, "ASoC: Scheduling resume work\n");
|