aboutsummaryrefslogtreecommitdiff
path: root/sound/pci/hda/hda_generic.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-12-21 14:09:42 +0100
committerTakashi Iwai <tiwai@suse.de>2013-01-12 08:42:56 +0100
commit38cf6f1a41e40a33d80924554b356fcd5b5d2751 (patch)
tree7c027e9fc6a552bea88e1738c2cbd3a153ed609a /sound/pci/hda/hda_generic.h
parentb3a8c74522ae7c992cd916c3bd4b685d742c0e2a (diff)
ALSA: hda - Implement independent HP control
Similar like the implementation in patch_analog.c and patch_via.c, the generic parser can provide the independent HP PCM stream now. It's enabled when spec->indep_hp is set by the caller while parsing. Currently no dynamic PCM switching as in patch_via.c is implemented yet. The control returns -EBUSY when the value is changed during PCM operations. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_generic.h')
-rw-r--r--sound/pci/hda/hda_generic.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_generic.h b/sound/pci/hda/hda_generic.h
index 85d138fc10b..5c1569c6988 100644
--- a/sound/pci/hda/hda_generic.h
+++ b/sound/pci/hda/hda_generic.h
@@ -65,6 +65,9 @@ struct automic_entry {
unsigned int attr; /* pin attribute (INPUT_PIN_ATTR_*) */
};
+/* active stream id */
+enum { STREAM_MULTI_OUT, STREAM_INDEP_HP };
+
struct hda_gen_spec {
char stream_name_analog[32]; /* analog PCM stream */
const struct hda_pcm_stream *stream_analog_playback;
@@ -76,6 +79,10 @@ struct hda_gen_spec {
const struct hda_pcm_stream *stream_digital_playback;
const struct hda_pcm_stream *stream_digital_capture;
+ /* PCM */
+ unsigned int active_streams;
+ struct mutex pcm_mutex;
+
/* playback */
struct hda_multi_out multiout; /* playback set-up
* max_channels, dacs must be set
@@ -150,6 +157,8 @@ struct hda_gen_spec {
unsigned int inv_dmic_split:1; /* inverted dmic w/a for conexant */
unsigned int own_eapd_ctl:1; /* set EAPD by own function */
unsigned int vmaster_mute_enum:1; /* add vmaster mute mode enum */
+ unsigned int indep_hp:1; /* independent HP supported */
+ unsigned int indep_hp_enabled:1; /* independent HP enabled */
/* for virtual master */
hda_nid_t vmaster_nid;