Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f6e8a85 authored by Subhransu S. Prusty's avatar Subhransu S. Prusty Committed by Takashi Iwai
Browse files

ALSA: hda - Move chmap support helpers/ops to core



Chmap helpers, ops, controls are moved to core.

Signed-off-by: default avatarSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 828cb4ed
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
#ifndef __SOUND_HDA_CHMAP_H
#define __SOUND_HDA_CHMAP_H

#include <sound/pcm.h>
#include <sound/hdaudio.h>


@@ -58,4 +59,18 @@ struct hdac_chmap {

void snd_hdac_register_chmap_ops(struct hdac_device *hdac,
				struct hdac_chmap *chmap);
int hdmi_channel_allocation(struct hdac_device *hdac, int spk_alloc,
			int channels, bool chmap_set,
			bool non_pcm, unsigned char *map);
int hdmi_get_active_channels(int ca);
void hdmi_setup_channel_mapping(struct hdac_chmap *chmap,
		       hda_nid_t pin_nid, bool non_pcm, int ca,
		       int channels, unsigned char *map,
		       bool chmap_set);
void snd_print_channel_allocation(int spk_alloc, char *buf, int buflen);
struct hdac_cea_channel_speaker_allocation *hdmi_get_ch_alloc_from_ca(int ca);
int to_spk_mask(unsigned char c);
int spk_to_chmap(int spk);
int snd_hdac_add_chmap_ctls(struct snd_pcm *pcm, int pcm_idx,
				struct hdac_chmap *chmap);
#endif /* __SOUND_HDA_CHMAP_H */
+742 −0

File changed.

Preview size limit exceeded, changes collapsed.

+1 −26
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <linux/slab.h>
#include <sound/core.h>
#include <asm/unaligned.h>
#include <sound/hda_chmap.h>
#include "hda_codec.h"
#include "hda_local.h"

@@ -42,20 +43,6 @@ enum cea_edid_versions {
	CEA_EDID_VER_RESERVED	= 4,
};

static const char * const cea_speaker_allocation_names[] = {
	/*  0 */ "FL/FR",
	/*  1 */ "LFE",
	/*  2 */ "FC",
	/*  3 */ "RL/RR",
	/*  4 */ "RC",
	/*  5 */ "FLC/FRC",
	/*  6 */ "RLC/RRC",
	/*  7 */ "FLW/FRW",
	/*  8 */ "FLH/FRH",
	/*  9 */ "TC",
	/* 10 */ "FCH",
};

static const char * const eld_connection_type_names[4] = {
	"HDMI",
	"DisplayPort",
@@ -419,18 +406,6 @@ static void hdmi_show_short_audio_desc(struct hda_codec *codec,
		  a->channels, buf, buf2);
}

void snd_print_channel_allocation(int spk_alloc, char *buf, int buflen)
{
	int i, j;

	for (i = 0, j = 0; i < ARRAY_SIZE(cea_speaker_allocation_names); i++) {
		if (spk_alloc & (1 << i))
			j += snprintf(buf + j, buflen - j,  " %s",
					cea_speaker_allocation_names[i]);
	}
	buf[j] = '\0';	/* necessary when j == 0 */
}

void snd_hdmi_show_eld(struct hda_codec *codec, struct parsed_hdmi_eld *e)
{
	int i;
+1 −688

File changed.

Preview size limit exceeded, changes collapsed.