Re: [PATCH v2 0/2 RESEND] usb: gadget: uac2: support explicit channel counts
From: Greg Kroah-Hartman
Date: Sat Oct 17 2026 - 04:05:20 EST
On Fri, Oct 16, 2026 at 09:25:32AM -0700, Kyle Farrell wrote:
> USB Audio Class 2.0 permits up to 255 channels in an audio channel cluster
> via bNrChannels. Independently, a channel-location bitmap is specified via
> bmChannelConfig for up to 27 predefined spatial locations. Setting
> bmChannelConfig to zero indicates that the channels have no predefined
> spatial positions.
>
> The current UAC2 gadget driver derives bNrChannels from the number of set
> bits in bmChannelConfig. Since bmChannelConfig provides 27 predefined
> spatial locations this limits playback and capture streams to 27 channels.
>
> This series allows channel counts up to the UAC2 limit of 255 without
> requiring predefined spatial channel locations in bmChannelConfig.
> Existing ConfigFS channel-mask configuration continues to work unchanged.
> New optional playback and capture count attributes allow the number of
> channels to be specified separately from the channel-location bitmap.
>
> The series is split so that the shared u_audio infrastructure is updated
> first without changing behavior, followed by the UAC2 functional change.
>
> Patch 1:
> Pass resolved playback and capture channel counts explicitly into
> the UAC1/UAC2 shared u_audio implementation instead of deriving them
> from channel masks.
>
> Patch 2:
> Add ConfigFS playback/capture channel-count attributes to the UAC2
> function driver and use them when generating descriptors and stream
> configuration, allowing counts beyond the 27 predefined channel
> locations.
>
> Testing
>
> Testing was performed using a Raspberry Pi Zero 2 W configured as a USB
> UAC2 gadget. Streaming and descriptor validation were performed against
> both Linux and macOS hosts. Windows hosts were not tested.
>
> UAC1
> - Verified playback/capture operation via alsaloop.
> - No descriptor or behavioral changes observed.
>
> UAC2
> - Verified legacy channel-mask configuration (1-27 channels).
> - Verified explicit channel-count mode with 2, 28, 61, 62, 96 channels.
> - Verified invalid channel-count/channel-mask combinations are rejected.
> - Verified Feature Unit descriptor size limits at 61/62 channel boundary.
> - Verified descriptors including:
> * bNrChannels
> * bmChannelConfig
> * Feature Unit presence and bLength
> * AudioControl wTotalLength
> * endpoint wMaxPacketSize
> - Verified ALSA-reported playback and capture channel counts.
> - Verified streaming using alsaloop.
>
> Changes in v2:
> - Edit commit messages for clarity and brevity.
> - Add Assisted-by: LLM attribution.
> - No code changes.
Why was RESEND needed here? Saying that would be nice.
Also, sashiko points out a number of problems...
thanks,
greg k-h