diff options
| -rw-r--r-- | sound/pci/hda/hda_codec.c | 4 | ||||
| -rw-r--r-- | sound/pci/hda/hda_intel.c | 14 |
2 files changed, 13 insertions, 5 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 7a8fcc4c15f8..841475cc13b6 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
| @@ -5444,10 +5444,6 @@ int snd_hda_suspend(struct hda_bus *bus) | |||
| 5444 | list_for_each_entry(codec, &bus->codec_list, list) { | 5444 | list_for_each_entry(codec, &bus->codec_list, list) { |
| 5445 | if (hda_codec_is_power_on(codec)) | 5445 | if (hda_codec_is_power_on(codec)) |
| 5446 | hda_call_codec_suspend(codec); | 5446 | hda_call_codec_suspend(codec); |
| 5447 | else /* forcibly change the power to D3 even if not used */ | ||
| 5448 | hda_set_power_state(codec, | ||
| 5449 | codec->afg ? codec->afg : codec->mfg, | ||
| 5450 | AC_PWRST_D3); | ||
| 5451 | if (codec->patch_ops.post_suspend) | 5447 | if (codec->patch_ops.post_suspend) |
| 5452 | codec->patch_ops.post_suspend(codec); | 5448 | codec->patch_ops.post_suspend(codec); |
| 5453 | } | 5449 | } |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index c19e71a94e1b..6e958bf94191 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
| @@ -2351,6 +2351,17 @@ static void azx_power_notify(struct hda_bus *bus) | |||
| 2351 | * power management | 2351 | * power management |
| 2352 | */ | 2352 | */ |
| 2353 | 2353 | ||
| 2354 | static int snd_hda_codecs_inuse(struct hda_bus *bus) | ||
| 2355 | { | ||
| 2356 | struct hda_codec *codec; | ||
| 2357 | |||
| 2358 | list_for_each_entry(codec, &bus->codec_list, list) { | ||
| 2359 | if (snd_hda_codec_needs_resume(codec)) | ||
| 2360 | return 1; | ||
| 2361 | } | ||
| 2362 | return 0; | ||
| 2363 | } | ||
| 2364 | |||
| 2354 | static int azx_suspend(struct pci_dev *pci, pm_message_t state) | 2365 | static int azx_suspend(struct pci_dev *pci, pm_message_t state) |
| 2355 | { | 2366 | { |
| 2356 | struct snd_card *card = pci_get_drvdata(pci); | 2367 | struct snd_card *card = pci_get_drvdata(pci); |
| @@ -2397,7 +2408,8 @@ static int azx_resume(struct pci_dev *pci) | |||
| 2397 | return -EIO; | 2408 | return -EIO; |
| 2398 | azx_init_pci(chip); | 2409 | azx_init_pci(chip); |
| 2399 | 2410 | ||
| 2400 | azx_init_chip(chip, 1); | 2411 | if (snd_hda_codecs_inuse(chip->bus)) |
| 2412 | azx_init_chip(chip, 1); | ||
| 2401 | 2413 | ||
| 2402 | snd_hda_resume(chip->bus); | 2414 | snd_hda_resume(chip->bus); |
| 2403 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); | 2415 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); |
