[alsa-devel] [PATCH] ALSA: hda: Disable odd numbered channels on HDMI controllers.
Anssi Hannula
anssi.hannula at iki.fi
Thu Jan 13 21:42:39 CET 2011
On 13.01.2011 22:19, Nitin Daga wrote:
> Added code in hda_intel.c to disable odd numbered channels
> not supported by HDMI controllers.
>
> Signed-off-by: Nitin Daga <ndaga at nvidia.com>
> Acked-By: Stephen Warren <swarren at nvidia.com>
> ---
> pci/hda/hda_intel.c | 13 +++++++++++++
> 1 files changed, 13 insertions(+), 0 deletions(-)
>
> diff --git a/pci/hda/hda_intel.c b/pci/hda/hda_intel.c
> index a78ea34..293c685 100644
> --- a/pci/hda/hda_intel.c
> +++ b/pci/hda/hda_intel.c
> @@ -1539,6 +1539,16 @@ struct azx_pcm {
> struct hda_pcm_stream *hinfo[2];
> };
>
> +static unsigned int channels_2_4_6_8[] = {
> + 2, 4, 6, 8
> +};
> +
> +static struct snd_pcm_hw_constraint_list hw_constraints_2_4_6_8_channels = {
> + .count = ARRAY_SIZE(channels_2_4_6_8),
> + .list = channels_2_4_6_8,
> + .mask = 0,
> +};
Hmm, can't these be const? OTOH none of the other drivers use const for
snd_pcm_hw_constraint_list either, so I guess it is ok.
> static int azx_pcm_open(struct snd_pcm_substream *substream)
> {
> struct azx_pcm *apcm = snd_pcm_substream_chip(substream);
> @@ -1566,6 +1576,9 @@ static int azx_pcm_open(struct snd_pcm_substream *substream)
> 128);
> snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES,
> 128);
> + snd_pcm_hw_constraint_list(runtime, 0,
> + SNDRV_PCM_HW_PARAM_CHANNELS,
> + &hw_constraints_2_4_6_8_channels);
This would seem simpler and more generic (there are codecs that have
over 8 channels):
snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, 2);
However, either of those would AFAICS break Si3054 Modem codec which is
mono-only.
Maybe just add the constraint to patch_hdmi.c?
Or use the patch as is but add 1, 10, 12, 14, 16 (or so) to the allowed
channel counts list.
Not really sure what is the preferred approach, though.
> snd_hda_power_up(apcm->codec);
> err = hinfo->ops.open(hinfo, apcm->codec, substream);
> if (err < 0) {
--
Anssi Hannula
More information about the Alsa-devel
mailing list