Commit d893d5ea authored by Wesley Cheng's avatar Wesley Cheng Committed by Greg Kroah-Hartman
Browse files

ALSA: usb-audio: Save UAC sample size information



Within the UAC descriptor, there is information describing the size of a
sample (bSubframeSize/bSubslotSize) and the number of relevant bits
(bBitResolution).  Currently, fmt_bits carries only the bit resolution,
however, some offloading entities may also require the overall size of the
sample.  Save this information in a separate parameter, as depending on the
UAC format type, the sample size can not easily be decoded from other
existing parameters.

Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarWesley Cheng <quic_wcheng@quicinc.com>
Acked-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20250409194804.3773260-11-quic_wcheng@quicinc.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2bde4392
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ struct audioformat {
	unsigned int channels;		/* # channels */
	unsigned int fmt_type;		/* USB audio format type (1-3) */
	unsigned int fmt_bits;		/* number of significant bits */
	unsigned int fmt_sz;		/* overall audio sub frame/slot size */
	unsigned int frame_size;	/* samples per frame for non-audio */
	unsigned char iface;		/* interface number */
	unsigned char altsetting;	/* corresponding alternate setting */
+1 −0
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
	}

	fp->fmt_bits = sample_width;
	fp->fmt_sz = sample_bytes;

	if ((pcm_formats == 0) &&
	    (format == 0 || format == BIT(UAC_FORMAT_TYPE_I_UNDEFINED))) {