diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 2 | ||||
-rw-r--r-- | sound/pci/hda/hda_codec.h | 3 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 12 |
3 files changed, 17 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 9c27a3a4c4d5..c0e83ed0b351 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -5103,6 +5103,8 @@ int snd_hda_resume(struct hda_bus *bus) | |||
5103 | struct hda_codec *codec; | 5103 | struct hda_codec *codec; |
5104 | 5104 | ||
5105 | list_for_each_entry(codec, &bus->codec_list, list) { | 5105 | list_for_each_entry(codec, &bus->codec_list, list) { |
5106 | if (codec->patch_ops.pre_resume) | ||
5107 | codec->patch_ops.pre_resume(codec); | ||
5106 | if (snd_hda_codec_needs_resume(codec)) | 5108 | if (snd_hda_codec_needs_resume(codec)) |
5107 | hda_call_codec_resume(codec); | 5109 | hda_call_codec_resume(codec); |
5108 | } | 5110 | } |
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index f465e07a4879..82161466d3b0 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h | |||
@@ -712,6 +712,9 @@ struct hda_codec_ops { | |||
712 | int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid); | 712 | int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid); |
713 | #endif | 713 | #endif |
714 | void (*reboot_notify)(struct hda_codec *codec); | 714 | void (*reboot_notify)(struct hda_codec *codec); |
715 | #ifdef SND_HDA_NEEDS_RESUME | ||
716 | int (*pre_resume)(struct hda_codec *codec); | ||
717 | #endif | ||
715 | }; | 718 | }; |
716 | 719 | ||
717 | /* record for amp information cache */ | 720 | /* record for amp information cache */ |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 00ea2bd6bc14..c4a6ecb8e085 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -4935,6 +4935,17 @@ static void stac927x_proc_hook(struct snd_info_buffer *buffer, | |||
4935 | #endif | 4935 | #endif |
4936 | 4936 | ||
4937 | #ifdef SND_HDA_NEEDS_RESUME | 4937 | #ifdef SND_HDA_NEEDS_RESUME |
4938 | static int stac92xx_pre_resume(struct hda_codec *codec) | ||
4939 | { | ||
4940 | struct sigmatel_spec *spec = codec->spec; | ||
4941 | |||
4942 | /* sync mute LED */ | ||
4943 | if (spec->gpio_led) | ||
4944 | stac_gpio_set(codec, spec->gpio_mask, | ||
4945 | spec->gpio_dir, spec->gpio_data); | ||
4946 | return 0; | ||
4947 | } | ||
4948 | |||
4938 | static int stac92xx_resume(struct hda_codec *codec) | 4949 | static int stac92xx_resume(struct hda_codec *codec) |
4939 | { | 4950 | { |
4940 | struct sigmatel_spec *spec = codec->spec; | 4951 | struct sigmatel_spec *spec = codec->spec; |
@@ -5013,6 +5024,7 @@ static const struct hda_codec_ops stac92xx_patch_ops = { | |||
5013 | #ifdef SND_HDA_NEEDS_RESUME | 5024 | #ifdef SND_HDA_NEEDS_RESUME |
5014 | .suspend = stac92xx_suspend, | 5025 | .suspend = stac92xx_suspend, |
5015 | .resume = stac92xx_resume, | 5026 | .resume = stac92xx_resume, |
5027 | .pre_resume = stac92xx_pre_resume, | ||
5016 | #endif | 5028 | #endif |
5017 | .reboot_notify = stac92xx_shutup, | 5029 | .reboot_notify = stac92xx_shutup, |
5018 | }; | 5030 | }; |