Messages in this thread | | | Date | Tue, 30 Apr 2024 17:32:24 -0700 | Subject | Re: [PATCH v20 33/41] ASoC: usb: Create SOC USB SND jack kcontrol | From | Wesley Cheng <> |
| |
Hi Amadeusz,
On 4/26/2024 6:26 AM, Amadeusz Sławiński wrote: > On 4/25/2024 11:51 PM, Wesley Cheng wrote: >> Expose API for creation of a jack control for notifying of available >> devices that are plugged in/discovered, and that support offloading. >> This >> allows for control names to be standardized across implementations of USB >> audio offloading. >> >> Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com> >> --- > > (...) > >> /* SOC USB sound kcontrols */ >> +/** >> + * snd_soc_usb_setup_offload_jack() - Create USB offloading jack >> + * @component: USB DPCM backend DAI component >> + * @jack: jack structure to create >> + * >> + * Creates a jack device for notifying userspace of the availability >> + * of an offload capable device. >> + * >> + * Returns 0 on success, negative on error. >> + * >> + */ >> +int snd_soc_usb_setup_offload_jack(struct snd_soc_component *component, >> + struct snd_soc_jack *jack) >> +{ >> + int ret; >> + >> + ret = snd_soc_card_jack_new(component->card, "USB Offload >> Playback Jack", >> + SND_JACK_HEADPHONE, jack); >> + if (ret < 0) { >> + dev_err(component->card->dev, "Unable to add USB offload >> jack\n"); >> + return ret; >> + } >> + >> + ret = snd_soc_component_set_jack(component, jack, NULL); >> + if (ret) { >> + dev_warn(component->card->dev, "Failed to set jack: %d\n", ret); >> + return ret; >> + } >> + >> + return 0; >> +} >> +EXPORT_SYMBOL_GPL(snd_soc_usb_setup_offload_jack); >> + >> static int snd_soc_usb_get_offload_card_status(struct snd_kcontrol >> *kcontrol, >> struct snd_ctl_elem_value *ucontrol) >> { >> > > I'm not sure if this should be handled in generic USB API, this feels > like something that should be handled in specific device driver side, > like all users currently do. >
In some of the previous comments, it was mentioned that maybe it was better to have more consistent/defined naming across devices that do have support for audio offload. Initially, I did have these within our vendor specific ASoC platform driver also.
> Anyway I think there should also be some function that tears jack down, > by calling: > snd_soc_component_set_jack(component, NULL, NULL); > so it can get cleaned up properly?
I can add that. I didn't realize there were some situations where maybe components would want to disable the jack. I will leave the cleanup part to ASoC when the platform card is removed.
Thanks Wesley Cheng
| |