[alsa-devel] [PATCH v4 05/14] ASoC: hdac_hdmi: Apply constraints based on ELD

Takashi Iwai tiwai at suse.de
Fri Jan 8 15:48:03 CET 2016


On Fri, 08 Jan 2016 15:09:33 +0100,
Mark Brown wrote:
> 
> On Wed, Dec 09, 2015 at 09:46:12PM +0530, Subhransu S. Prusty wrote:
> 
> > +static int hdac_hdmi_eld_limit_formats(struct snd_pcm_runtime *runtime,
> > +						void *eld)
> > +{
> > +	u64 formats = SNDRV_PCM_FMTBIT_S16;
> > +	int i;
> > +	const u8 *sad, *eld_buf = eld;
> > +
> > +	sad = drm_eld_sad(eld_buf);
> > +	if (!sad)
> > +		goto format_constraint;
> > +
> > +	for (i = drm_eld_sad_count(eld_buf); i > 0; i--, sad += 3) {
> > +		if (sad_format(sad) == 1) { /* AUDIO_CODING_TYPE_LPCM */
> 
> 	switch (sad_format(sad))  {
> 	case AUDIO_CODING_TYPE_LPCM:
> 
> > +
> > +			/* 20 bit and 24 bit */
> > +			if (sad_sample_bits_lpcm(sad) & 0x6)
> > +				formats |= SNDRV_PCM_FMTBIT_S32;
> > +		}
> > +	}
> 
> I really don't have a clear idea what the above is supposed to do or why
> this is specific to HDAC and not handled...
> 
> > -	return 0;
> > +	return snd_pcm_hw_constraint_eld(substream->runtime,
> > +				dai_map->pin->eld.eld_buffer);
> 
> 
> ...here.


The PCM format cannot be determined uniquely as it depends on the
container type and endianness.  So this can't be implemented in a
generic helper.


Takashi


More information about the Alsa-devel mailing list