On Mon, 12 Dec 2016 10:38:45 +0100, Arnaud Pouliquen wrote: > > > > On 12/11/2016 07:09 AM, Takashi Sakamoto wrote: > > On Dec 9 2016 01:37, Arnaud Pouliquen wrote: > >> Add user interface to provide channel mapping. > >> In a first step this control is read only. > >> > >> As TLV type, the control provides all configurations available for > >> HDMI sink(ELD), and provides current channel mapping selected by codec > >> based on ELD and number of channels specified by user on open. > >> When control is called before the number of the channel is specified > >> (i.e. hw_params is set), it returns all channels set to UNKNOWN. > >> > >> Notice that SNDRV_CTL_TLVT_CHMAP_FIXED is used for all mappings, > >> as no information is available from HDMI driver to allow channel swapping. > >> > >> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@xxxxxx> > >> --- > >> sound/soc/codecs/hdmi-codec.c | 346 +++++++++++++++++++++++++++++++++++++++++- > >> 1 file changed, 345 insertions(+), 1 deletion(-) > >> > >> diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c > >> index f27d115..0cb83a3 100644 > >> --- a/sound/soc/codecs/hdmi-codec.c > >> +++ b/sound/soc/codecs/hdmi-codec.c > >> @@ -18,12 +18,137 @@ > >> #include <sound/pcm.h> > >> #include <sound/pcm_params.h> > >> #include <sound/soc.h> > >> +#include <sound/tlv.h> > >> #include <sound/pcm_drm_eld.h> > >> #include <sound/hdmi-codec.h> > >> #include <sound/pcm_iec958.h> > >> > >> #include <drm/drm_crtc.h> /* This is only to get MAX_ELD_BYTES */ > >> > >> +#define HDMI_MAX_SPEAKERS 8 > >> + > >> +/* > >> + * CEA speaker placement for HDMI 1.4: > >> + * > >> + * FL FLC FC FRC FR FRW > >> + * > >> + * LFE > >> + * > >> + * RL RLC RC RRC RR > >> + * > >> + * Speaker placement has to be extended to support HDMI 2.0 > >> + */ > >> +enum hdmi_codec_cea_spk_placement { > >> + FL = (1 << 0), /* Front Left */ > >> + FC = (1 << 1), /* Front Center */ > >> + FR = (1 << 2), /* Front Right */ > >> + FLC = (1 << 3), /* Front Left Center */ > >> + FRC = (1 << 4), /* Front Right Center */ > >> + RL = (1 << 5), /* Rear Left */ > >> + RC = (1 << 6), /* Rear Center */ > >> + RR = (1 << 7), /* Rear Right */ > >> + RLC = (1 << 8), /* Rear Left Center */ > >> + RRC = (1 << 9), /* Rear Right Center */ > >> + LFE = (1 << 10), /* Low Frequency Effect */ > >> +}; > > > > BIT() macro in "linux/bitops.h" is available. > will be corrected in a v2 One slight caution: BIT() expands to an unsigned long type. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel