Skip to content

Commit

Permalink
Revert "ALSA: hda: Refactor codec PM to use direct-complete optimizat…
Browse files Browse the repository at this point in the history
…ion"

BugLink: https://bugs.launchpad.net/bugs/1908713

This reverts commit d5114fb.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao@canonical.com>
  • Loading branch information
Kai-Heng Feng authored and Chia-Lin Kao (AceLan) committed Dec 28, 2020
1 parent 90ec070 commit a7129e1
Showing 1 changed file with 16 additions and 29 deletions.
45 changes: 16 additions & 29 deletions sound/pci/hda/hda_codec.c
Original file line number Diff line number Diff line change
Expand Up @@ -2930,7 +2930,7 @@ static void hda_call_codec_resume(struct hda_codec *codec)
snd_hdac_leave_pm(&codec->core);
}

static int hda_codec_suspend(struct device *dev)
static int hda_codec_runtime_suspend(struct device *dev)
{
struct hda_codec *codec = dev_to_hda_codec(dev);
unsigned int state;
Expand All @@ -2945,7 +2945,7 @@ static int hda_codec_suspend(struct device *dev)
return 0;
}

static int hda_codec_resume(struct device *dev)
static int hda_codec_runtime_resume(struct device *dev)
{
struct hda_codec *codec = dev_to_hda_codec(dev);

Expand All @@ -2955,70 +2955,57 @@ static int hda_codec_resume(struct device *dev)
pm_runtime_mark_last_busy(dev);
return 0;
}

static int hda_codec_runtime_suspend(struct device *dev)
{
return hda_codec_suspend(dev);
}

static int hda_codec_runtime_resume(struct device *dev)
{
return hda_codec_resume(dev);
}

#endif /* CONFIG_PM */

#ifdef CONFIG_PM_SLEEP
static int hda_codec_pm_prepare(struct device *dev)
{
return pm_runtime_suspended(dev);
}

static void hda_codec_pm_complete(struct device *dev)
static int hda_codec_force_resume(struct device *dev)
{
struct hda_codec *codec = dev_to_hda_codec(dev);
int ret;

if (pm_runtime_suspended(dev) && (codec->jackpoll_interval ||
hda_codec_need_resume(codec) || codec->forced_resume))
pm_request_resume(dev);
ret = pm_runtime_force_resume(dev);
/* schedule jackpoll work for jack detection update */
if (codec->jackpoll_interval ||
(pm_runtime_suspended(dev) && hda_codec_need_resume(codec)))
schedule_delayed_work(&codec->jackpoll_work,
codec->jackpoll_interval);
return ret;
}

static int hda_codec_pm_suspend(struct device *dev)
{
dev->power.power_state = PMSG_SUSPEND;
return hda_codec_suspend(dev);
return pm_runtime_force_suspend(dev);
}

static int hda_codec_pm_resume(struct device *dev)
{
dev->power.power_state = PMSG_RESUME;
return hda_codec_resume(dev);
return hda_codec_force_resume(dev);
}

static int hda_codec_pm_freeze(struct device *dev)
{
dev->power.power_state = PMSG_FREEZE;
return hda_codec_suspend(dev);
return pm_runtime_force_suspend(dev);
}

static int hda_codec_pm_thaw(struct device *dev)
{
dev->power.power_state = PMSG_THAW;
return hda_codec_resume(dev);
return hda_codec_force_resume(dev);
}

static int hda_codec_pm_restore(struct device *dev)
{
dev->power.power_state = PMSG_RESTORE;
return hda_codec_resume(dev);
return hda_codec_force_resume(dev);
}
#endif /* CONFIG_PM_SLEEP */

/* referred in hda_bind.c */
const struct dev_pm_ops hda_codec_driver_pm = {
#ifdef CONFIG_PM_SLEEP
.prepare = hda_codec_pm_prepare,
.complete = hda_codec_pm_complete,
.suspend = hda_codec_pm_suspend,
.resume = hda_codec_pm_resume,
.freeze = hda_codec_pm_freeze,
Expand Down

0 comments on commit a7129e1

Please sign in to comment.