[PATCH 2/2] ASoC: hdmi-codec: add channel mapping control
Takashi Iwai
tiwai at suse.de
Mon Dec 12 09:54:27 UTC 2016
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 at st.com>
> >> ---
> >> 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
More information about the dri-devel
mailing list