Skip to content

Commit

Permalink
ALSA: hda: Disable 4/6 channels on some NVIDIA GPUs.
Browse files Browse the repository at this point in the history
Added hardware constraint in patch_hdmi.c to disable
channels 4/6 which are not supported by some older
NVIDIA GPUs.

Signed-off-by: Nitin Daga <ndaga@nvidia.com>
Acked-By: Stephen Warren <swarren@nvidia.com>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Nitin Daga authored and Takashi Iwai committed Jan 12, 2011
1 parent 0ebaa24 commit 393004b
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions sound/pci/hda/patch_hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1193,11 +1193,53 @@ static int nvhdmi_7x_init(struct hda_codec *codec)
return 0;
}

static unsigned int channels_2_6_8[] = {
2, 6, 8
};

static unsigned int channels_2_8[] = {
2, 8
};

static struct snd_pcm_hw_constraint_list hw_constraints_2_6_8_channels = {
.count = ARRAY_SIZE(channels_2_6_8),
.list = channels_2_6_8,
.mask = 0,
};

static struct snd_pcm_hw_constraint_list hw_constraints_2_8_channels = {
.count = ARRAY_SIZE(channels_2_8),
.list = channels_2_8,
.mask = 0,
};

static int simple_playback_pcm_open(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
struct snd_pcm_substream *substream)
{
struct hdmi_spec *spec = codec->spec;
struct snd_pcm_hw_constraint_list *hw_constraints_channels = NULL;

switch (codec->preset->id) {
case 0x10de0002:
case 0x10de0003:
case 0x10de0005:
case 0x10de0006:
hw_constraints_channels = &hw_constraints_2_8_channels;
break;
case 0x10de0007:
hw_constraints_channels = &hw_constraints_2_6_8_channels;
break;
default:
break;
}

if (hw_constraints_channels != NULL) {
snd_pcm_hw_constraint_list(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_CHANNELS,
hw_constraints_channels);
}

return snd_hda_multi_out_dig_open(codec, &spec->multiout);
}

Expand Down

0 comments on commit 393004b

Please sign in to comment.