[ALSA] hda-codec - Add auto-mute function to Sony VAIO with STAC9872
[pandora-kernel.git] / sound / pci / hda / patch_atihdmi.c
index 831469d..fbb8969 100644 (file)
@@ -62,19 +62,6 @@ static int atihdmi_init(struct hda_codec *codec)
        return 0;
 }
 
-#ifdef CONFIG_PM
-/*
- * resume
- */
-static int atihdmi_resume(struct hda_codec *codec)
-{
-       atihdmi_init(codec);
-       snd_hda_resume_spdif_out(codec);
-
-       return 0;
-}
-#endif
-
 /*
  * Digital out
  */
@@ -94,6 +81,17 @@ static int atihdmi_dig_playback_pcm_close(struct hda_pcm_stream *hinfo,
        return snd_hda_multi_out_dig_close(codec, &spec->multiout);
 }
 
+static int atihdmi_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
+                                           struct hda_codec *codec,
+                                           unsigned int stream_tag,
+                                           unsigned int format,
+                                           struct snd_pcm_substream *substream)
+{
+       struct atihdmi_spec *spec = codec->spec;
+       return snd_hda_multi_out_dig_prepare(codec, &spec->multiout, stream_tag,
+                                            format, substream);
+}
+
 static struct hda_pcm_stream atihdmi_pcm_digital_playback = {
        .substreams = 1,
        .channels_min = 2,
@@ -101,7 +99,8 @@ static struct hda_pcm_stream atihdmi_pcm_digital_playback = {
        .nid = 0x2, /* NID to query formats and rates and setup streams */
        .ops = {
                .open = atihdmi_dig_playback_pcm_open,
-               .close = atihdmi_dig_playback_pcm_close
+               .close = atihdmi_dig_playback_pcm_close,
+               .prepare = atihdmi_dig_playback_pcm_prepare
        },
 };
 
@@ -129,9 +128,6 @@ static struct hda_codec_ops atihdmi_patch_ops = {
        .build_pcms = atihdmi_build_pcms,
        .init = atihdmi_init,
        .free = atihdmi_free,
-#ifdef CONFIG_PM
-       .resume = atihdmi_resume,
-#endif
 };
 
 static int patch_atihdmi(struct hda_codec *codec)
@@ -160,6 +156,8 @@ static int patch_atihdmi(struct hda_codec *codec)
  */
 struct hda_codec_preset snd_hda_preset_atihdmi[] = {
        { .id = 0x1002793c, .name = "ATI RS600 HDMI", .patch = patch_atihdmi },
-       { .id = 0x1002791a, .name = "ATI RS690 HDMI", .patch = patch_atihdmi },
+       { .id = 0x10027919, .name = "ATI RS600 HDMI", .patch = patch_atihdmi },
+       { .id = 0x1002791a, .name = "ATI RS690/780 HDMI", .patch = patch_atihdmi },
+       { .id = 0x1002aa01, .name = "ATI R600 HDMI", .patch = patch_atihdmi },
        {} /* terminator */
 };