On Tue, 13 Feb 2024 01:54:18 +0100, Wesley Cheng wrote: > > --- a/sound/usb/Makefile > +++ b/sound/usb/Makefile > @@ -22,6 +22,7 @@ snd-usb-audio-objs := card.o \ > stream.o \ > validate.o > > +snd-usb-audio-$(CONFIG_SND_USB_OFFLOAD_MIXER) += mixer_usb_offload.o > snd-usb-audio-$(CONFIG_SND_USB_AUDIO_MIDI_V2) += midi2.o > snd-usb-audio-$(CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER) += media.o This puts the code into snd-usb-audio driver, and that causes a dependency mess, since... > +snd_usb_offload_available_get(struct snd_kcontrol *kcontrol, > + struct snd_ctl_elem_value *ucontrol) > +{ > + struct device *sysdev = snd_kcontrol_chip(kcontrol); > + int ret; > + > + ret = snd_soc_usb_device_offload_available(sysdev); ... here you call snd_soc_usb_*() stuff that belongs to snd-soc-usb. That is, with this patch, snd-usb-audio driver will depend on snd-soc-usb, while snd-soc-usb also depends on snd-usb-audio for its helpers again. I believe the better way would be to move this whole miser_usb_offload code into sound/usb/qcom/. You need only usb_device and snd_card objects at the creation, and you can get them in qcom driver side, too. thanks, Takashi