OSDN Git Service

Merge tag 'sound-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[uclinux-h8/linux.git] / sound / pci / hda / patch_via.c
index bab6c04..0521be8 100644 (file)
@@ -117,6 +117,8 @@ static void via_playback_pcm_hook(struct hda_pcm_stream *hinfo,
                                  struct snd_pcm_substream *substream,
                                  int action);
 
+static const struct hda_codec_ops via_patch_ops; /* defined below */
+
 static struct via_spec *via_new_spec(struct hda_codec *codec)
 {
        struct via_spec *spec;
@@ -137,6 +139,7 @@ static struct via_spec *via_new_spec(struct hda_codec *codec)
        spec->gen.add_stereo_mix_input = HDA_HINT_STEREO_MIX_AUTO;
        codec->power_save_node = 1;
        spec->gen.power_down_unused = 1;
+       codec->patch_ops = via_patch_ops;
        return spec;
 }
 
@@ -481,7 +484,6 @@ static const struct hda_codec_ops via_patch_ops = {
        .init = via_init,
        .free = via_free,
        .unsol_event = snd_hda_jack_unsol_event,
-       .stream_pm = snd_hda_gen_stream_pm,
 #ifdef CONFIG_PM
        .suspend = via_suspend,
        .resume = via_resume,
@@ -661,6 +663,9 @@ static int patch_vt1708(struct hda_codec *codec)
        if (spec == NULL)
                return -ENOMEM;
 
+       /* override some patch_ops */
+       codec->patch_ops.build_controls = vt1708_build_controls;
+       codec->patch_ops.build_pcms = vt1708_build_pcms;
        spec->gen.mixer_nid = 0x17;
 
        /* set jackpoll_interval while parsing the codec */
@@ -689,10 +694,6 @@ static int patch_vt1708(struct hda_codec *codec)
 
        spec->init_verbs[spec->num_iverbs++] = vt1708_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
-       codec->patch_ops.build_controls = vt1708_build_controls;
-       codec->patch_ops.build_pcms = vt1708_build_pcms;
-
        /* clear jackpoll_interval again; it's set dynamically */
        codec->jackpoll_interval = 0;
 
@@ -717,8 +718,6 @@ static int patch_vt1709(struct hda_codec *codec)
                return err;
        }
 
-       codec->patch_ops = via_patch_ops;
-
        return 0;
 }
 
@@ -745,7 +744,6 @@ static int patch_vt1708B(struct hda_codec *codec)
                return err;
        }
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -810,7 +808,6 @@ static int patch_vt1708S(struct hda_codec *codec)
 
        spec->init_verbs[spec->num_iverbs++] = vt1708S_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -852,7 +849,6 @@ static int patch_vt1702(struct hda_codec *codec)
 
        spec->init_verbs[spec->num_iverbs++] = vt1702_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -925,7 +921,6 @@ static int patch_vt1718S(struct hda_codec *codec)
 
        spec->init_verbs[spec->num_iverbs++] = vt1718S_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -1025,7 +1020,6 @@ static int patch_vt1716S(struct hda_codec *codec)
        spec->mixers[spec->num_mixers++] = vt1716s_dmic_mixer;
        spec->mixers[spec->num_mixers++] = vt1716S_mono_out_mixer;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -1133,7 +1127,6 @@ static int patch_vt2002P(struct hda_codec *codec)
        else
                spec->init_verbs[spec->num_iverbs++] = vt2002P_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -1172,7 +1165,6 @@ static int patch_vt1812(struct hda_codec *codec)
 
        spec->init_verbs[spec->num_iverbs++]  = vt1812_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }
 
@@ -1210,7 +1202,6 @@ static int patch_vt3476(struct hda_codec *codec)
 
        spec->init_verbs[spec->num_iverbs++] = vt3476_init_verbs;
 
-       codec->patch_ops = via_patch_ops;
        return 0;
 }