diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-02-12 12:37:26 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:10 -0400 |
commit | 9a08160bdbe3148a405f72798f76e2a5d30bd243 (patch) | |
tree | 33b6785feb1fda1d381a74ef19eb26c983650749 /sound/pci/hda/hda_local.h | |
parent | f6c7e5461e9046445d50c5c7a9a4587824239623 (diff) |
[ALSA] hda-codec - Add "IEC958 Default PCM" switch
Added a new mixer switch to enable/disable the sharing of the default
PCM stream with analog and SPDIF outputs. When "IEC958 Default PCM"
switch is on, the PCM stream is routed both to analog and SPDIF outputs.
This is the behavior in the earlier version.
Turning this switch off has a merit for some codecs, though. Some codec
chips don't support 24bit formats for SPDIF but only for analog outputs.
In this case, you can use 24bit format by disabling this switch.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_local.h')
-rw-r--r-- | sound/pci/hda/hda_local.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h index ad0014ab71f9..ce2ad42a8a8a 100644 --- a/sound/pci/hda/hda_local.h +++ b/sound/pci/hda/hda_local.h | |||
@@ -228,8 +228,18 @@ struct hda_multi_out { | |||
228 | int max_channels; /* currently supported analog channels */ | 228 | int max_channels; /* currently supported analog channels */ |
229 | 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 */ | 230 | int no_share_stream; /* don't share a stream with multiple pins */ |
231 | int share_spdif; /* share SPDIF pin */ | ||
232 | /* PCM information for both analog and SPDIF DACs */ | ||
233 | unsigned int analog_rates; | ||
234 | unsigned int analog_maxbps; | ||
235 | u64 analog_formats; | ||
236 | unsigned int spdif_rates; | ||
237 | unsigned int spdif_maxbps; | ||
238 | u64 spdif_formats; | ||
231 | }; | 239 | }; |
232 | 240 | ||
241 | int snd_hda_create_spdif_share_sw(struct hda_codec *codec, | ||
242 | struct hda_multi_out *mout); | ||
233 | int snd_hda_multi_out_dig_open(struct hda_codec *codec, | 243 | int snd_hda_multi_out_dig_open(struct hda_codec *codec, |
234 | struct hda_multi_out *mout); | 244 | struct hda_multi_out *mout); |
235 | int snd_hda_multi_out_dig_close(struct hda_codec *codec, | 245 | int snd_hda_multi_out_dig_close(struct hda_codec *codec, |
@@ -241,7 +251,8 @@ int snd_hda_multi_out_dig_prepare(struct hda_codec *codec, | |||
241 | struct snd_pcm_substream *substream); | 251 | struct snd_pcm_substream *substream); |
242 | int snd_hda_multi_out_analog_open(struct hda_codec *codec, | 252 | int snd_hda_multi_out_analog_open(struct hda_codec *codec, |
243 | struct hda_multi_out *mout, | 253 | struct hda_multi_out *mout, |
244 | struct snd_pcm_substream *substream); | 254 | struct snd_pcm_substream *substream, |
255 | struct hda_pcm_stream *hinfo); | ||
245 | int snd_hda_multi_out_analog_prepare(struct hda_codec *codec, | 256 | int snd_hda_multi_out_analog_prepare(struct hda_codec *codec, |
246 | struct hda_multi_out *mout, | 257 | struct hda_multi_out *mout, |
247 | unsigned int stream_tag, | 258 | unsigned int stream_tag, |