Skip to content

Commit

Permalink
ALSA: hda: HDMI channel mapping cleanups
Browse files Browse the repository at this point in the history
Refactor the channel mapping code for consistent naming
and make it more informed about channel allocations.

Signed-off-by: Wu Fengguang <wfg@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Wu Fengguang authored and Takashi Iwai committed Nov 19, 2008
1 parent 698544d commit 9c8641e
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions sound/pci/hda/patch_intelhdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ static void hdmi_set_channel_count(struct hda_codec *codec, int chs)
chs, hdmi_get_channel_count(codec));
}

static void hdmi_debug_slot_mapping(struct hda_codec *codec)
static void hdmi_debug_channel_mapping(struct hda_codec *codec)
{
#ifdef CONFIG_SND_DEBUG_VERBOSE
int i;
Expand All @@ -305,13 +305,6 @@ static void hdmi_debug_slot_mapping(struct hda_codec *codec)
#endif
}

static void hdmi_setup_channel_mapping(struct hda_codec *codec)
{
snd_hda_sequence_write(codec, def_chan_map);
hdmi_debug_slot_mapping(codec);
}


static void hdmi_parse_eld(struct hda_codec *codec)
{
struct intel_hdmi_spec *spec = codec->spec;
Expand Down Expand Up @@ -461,6 +454,22 @@ static int hdmi_setup_channel_allocation(struct hda_codec *codec,
return -1;
}

static void hdmi_setup_channel_mapping(struct hda_codec *codec,
struct hdmi_audio_infoframe *ai)
{
if (!ai->CA)
return;

/*
* TODO: adjust channel mapping if necessary
* ALSA sequence is front/surr/clfe/side?
*/

snd_hda_sequence_write(codec, def_chan_map);
hdmi_debug_channel_mapping(codec);
}


static void hdmi_setup_audio_infoframe(struct hda_codec *codec,
struct snd_pcm_substream *substream)
{
Expand All @@ -472,6 +481,7 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec,
};

hdmi_setup_channel_allocation(codec, &ai);
hdmi_setup_channel_mapping(codec, &ai);

hdmi_fill_audio_infoframe(codec, &ai);
}
Expand Down Expand Up @@ -569,9 +579,6 @@ static int intel_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,

hdmi_set_channel_count(codec, substream->runtime->channels);

/* wfg: channel mapping not supported by DEVCTG */
hdmi_setup_channel_mapping(codec);

hdmi_setup_audio_infoframe(codec, substream);

hdmi_enable_output(codec);
Expand Down

0 comments on commit 9c8641e

Please sign in to comment.