ALSA: hda - Enable loopback accounts for CONFIG_PM=n, too
[firefly-linux-kernel-4.4.55.git] / sound / pci / hda / hda_generic.h
index 142a571ecd5b3b39a020ff8b076a045a940eed31..d5348dd7a14f36fedfb5ccf677f16c38a848f930 100644 (file)
@@ -80,6 +80,8 @@ struct hda_gen_spec {
        char stream_name_analog[32];    /* analog PCM stream */
        const struct hda_pcm_stream *stream_analog_playback;
        const struct hda_pcm_stream *stream_analog_capture;
+
+       char stream_name_alt_analog[32]; /* alternative analog PCM stream */
        const struct hda_pcm_stream *stream_analog_alt_playback;
        const struct hda_pcm_stream *stream_analog_alt_capture;
 
@@ -102,9 +104,12 @@ struct hda_gen_spec {
 
        /* capture */
        unsigned int num_adc_nids;
-       hda_nid_t adc_nids[AUTO_CFG_MAX_OUTS];
+       hda_nid_t adc_nids[AUTO_CFG_MAX_INS];
        hda_nid_t dig_in_nid;           /* digital-in NID; optional */
        hda_nid_t mixer_nid;            /* analog-mixer NID */
+       hda_nid_t mixer_merge_nid;      /* aamix merge-point NID (optional) */
+       const char *input_labels[HDA_MAX_NUM_INPUTS];
+       int input_label_idxs[HDA_MAX_NUM_INPUTS];
 
        /* capture setup for dynamic dual-adc switch */
        hda_nid_t cur_adc;
@@ -142,9 +147,11 @@ struct hda_gen_spec {
        unsigned int dyn_adc_idx[HDA_MAX_NUM_INPUTS];
        hda_nid_t shared_mic_vref_pin;
 
-       /* DAC list */
+       /* DAC/ADC lists */
        int num_all_dacs;
        hda_nid_t all_dacs[16];
+       int num_all_adcs;
+       hda_nid_t all_adcs[AUTO_CFG_MAX_INS];
 
        /* path list */
        struct snd_array paths;
@@ -155,8 +162,9 @@ struct hda_gen_spec {
        int speaker_paths[AUTO_CFG_MAX_OUTS];
        int aamix_out_paths[3];
        int digout_paths[AUTO_CFG_MAX_OUTS];
-       int input_paths[HDA_MAX_NUM_INPUTS][AUTO_CFG_MAX_OUTS];
+       int input_paths[HDA_MAX_NUM_INPUTS][AUTO_CFG_MAX_INS];
        int loopback_paths[HDA_MAX_NUM_INPUTS];
+       int loopback_merge_path;
        int digin_path;
 
        /* auto-mic stuff */
@@ -203,23 +211,25 @@ struct hda_gen_spec {
        unsigned int add_stereo_mix_input:1; /* add aamix as a capture src */
        unsigned int add_out_jack_modes:1; /* add output jack mode enum ctls */
        unsigned int add_in_jack_modes:1; /* add input jack mode enum ctls */
+       unsigned int power_down_unused:1; /* power down unused widgets */
 
        /* other internal flags */
        unsigned int no_analog:1; /* digital I/O only */
        unsigned int dyn_adc_switch:1; /* switch ADCs (for ALC275) */
        unsigned int indep_hp_enabled:1; /* independent HP enabled */
+       unsigned int have_aamix_ctl:1;
 
        /* loopback mixing mode */
        bool aamix_mode;
 
        /* for virtual master */
        hda_nid_t vmaster_nid;
+       unsigned int vmaster_tlv[4];
        struct hda_vmaster_mute_hook vmaster_mute;
-#ifdef CONFIG_PM
+
        struct hda_loopback_check loopback;
        int num_loopbacks;
        struct hda_amp_list loopback_list[8];
-#endif
 
        /* multi-io */
        int multi_ios;
@@ -228,13 +238,18 @@ struct hda_gen_spec {
        /* hooks */
        void (*init_hook)(struct hda_codec *codec);
        void (*automute_hook)(struct hda_codec *codec);
-       void (*cap_sync_hook)(struct hda_codec *codec);
+       void (*cap_sync_hook)(struct hda_codec *codec,
+                             struct snd_ctl_elem_value *ucontrol);
 
-       /* PCM playback hook */
+       /* PCM hooks */
        void (*pcm_playback_hook)(struct hda_pcm_stream *hinfo,
                                  struct hda_codec *codec,
                                  struct snd_pcm_substream *substream,
                                  int action);
+       void (*pcm_capture_hook)(struct hda_pcm_stream *hinfo,
+                                struct hda_codec *codec,
+                                struct snd_pcm_substream *substream,
+                                int action);
 
        /* automute / autoswitch hooks */
        void (*hp_automute_hook)(struct hda_codec *codec,
@@ -243,9 +258,6 @@ struct hda_gen_spec {
                                   struct hda_jack_tbl *tbl);
        void (*mic_autoswitch_hook)(struct hda_codec *codec,
                                    struct hda_jack_tbl *tbl);
-
-       /* capture switch hook (for mic-mute LED) */
-       void (*capture_switch_hook)(struct hda_codec *codec, bool enable);
 };
 
 int snd_hda_gen_spec_init(struct hda_gen_spec *spec);