aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_local.h
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/hda_local.h')
-rw-r--r--sound/pci/hda/hda_local.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
index 20c5e6250374..ad0014ab71f9 100644
--- a/sound/pci/hda/hda_local.h
+++ b/sound/pci/hda/hda_local.h
@@ -90,6 +90,13 @@ int snd_hda_codec_amp_stereo(struct hda_codec *codec, hda_nid_t nid,
90void snd_hda_codec_resume_amp(struct hda_codec *codec); 90void snd_hda_codec_resume_amp(struct hda_codec *codec);
91#endif 91#endif
92 92
93void snd_hda_set_vmaster_tlv(struct hda_codec *codec, hda_nid_t nid, int dir,
94 unsigned int *tlv);
95struct snd_kcontrol *snd_hda_find_mixer_ctl(struct hda_codec *codec,
96 const char *name);
97int snd_hda_add_vmaster(struct hda_codec *codec, char *name,
98 unsigned int *tlv, const char **slaves);
99
93/* amp value bits */ 100/* amp value bits */
94#define HDA_AMP_MUTE 0x80 101#define HDA_AMP_MUTE 0x80
95#define HDA_AMP_UNMUTE 0x00 102#define HDA_AMP_UNMUTE 0x00
@@ -220,6 +227,7 @@ struct hda_multi_out {
220 hda_nid_t dig_out_nid; /* digital out audio widget */ 227 hda_nid_t dig_out_nid; /* digital out audio widget */
221 int max_channels; /* currently supported analog channels */ 228 int max_channels; /* currently supported analog channels */
222 int dig_out_used; /* current usage of digital out (HDA_DIG_XXX) */ 229 int dig_out_used; /* current usage of digital out (HDA_DIG_XXX) */
230 int no_share_stream; /* don't share a stream with multiple pins */
223}; 231};
224 232
225int snd_hda_multi_out_dig_open(struct hda_codec *codec, 233int snd_hda_multi_out_dig_open(struct hda_codec *codec,
@@ -324,6 +332,7 @@ struct auto_pin_cfg {
324 hda_nid_t input_pins[AUTO_PIN_LAST]; 332 hda_nid_t input_pins[AUTO_PIN_LAST];
325 hda_nid_t dig_out_pin; 333 hda_nid_t dig_out_pin;
326 hda_nid_t dig_in_pin; 334 hda_nid_t dig_in_pin;
335 hda_nid_t mono_out_pin;
327}; 336};
328 337
329#define get_defcfg_connect(cfg) \ 338#define get_defcfg_connect(cfg) \
@@ -362,10 +371,11 @@ static inline u32 get_wcaps(struct hda_codec *codec, hda_nid_t nid)
362{ 371{
363 if (nid < codec->start_nid || 372 if (nid < codec->start_nid ||
364 nid >= codec->start_nid + codec->num_nodes) 373 nid >= codec->start_nid + codec->num_nodes)
365 return snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP); 374 return 0;
366 return codec->wcaps[nid - codec->start_nid]; 375 return codec->wcaps[nid - codec->start_nid];
367} 376}
368 377
378u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction);
369int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir, 379int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
370 unsigned int caps); 380 unsigned int caps);
371 381
@@ -397,4 +407,11 @@ int snd_hda_check_amp_list_power(struct hda_codec *codec,
397 hda_nid_t nid); 407 hda_nid_t nid);
398#endif /* CONFIG_SND_HDA_POWER_SAVE */ 408#endif /* CONFIG_SND_HDA_POWER_SAVE */
399 409
410/*
411 * virtual master control
412 */
413struct snd_kcontrol *snd_ctl_make_virtual_master(char *name,
414 const unsigned int *tlv);
415int snd_ctl_add_slave(struct snd_kcontrol *master, struct snd_kcontrol *slave);
416
400#endif /* __SOUND_HDA_LOCAL_H */ 417#endif /* __SOUND_HDA_LOCAL_H */