mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
ASoC: usb: Create SOC USB SND jack kcontrol
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. Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com> Acked-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20250409194804.3773260-17-quic_wcheng@quicinc.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
00f5d6bfba
commit
0bb5f3614b
2 changed files with 47 additions and 0 deletions
|
|
@ -56,6 +56,9 @@ int snd_soc_usb_connect(struct device *usbdev, struct snd_soc_usb_device *sdev);
|
|||
int snd_soc_usb_disconnect(struct device *usbdev, struct snd_soc_usb_device *sdev);
|
||||
void *snd_soc_usb_find_priv_data(struct device *usbdev);
|
||||
|
||||
int snd_soc_usb_setup_offload_jack(struct snd_soc_component *component,
|
||||
struct snd_soc_jack *jack);
|
||||
|
||||
struct snd_soc_usb *snd_soc_usb_allocate_port(struct snd_soc_component *component,
|
||||
void *data);
|
||||
void snd_soc_usb_free_port(struct snd_soc_usb *usb);
|
||||
|
|
@ -86,6 +89,12 @@ static inline void *snd_soc_usb_find_priv_data(struct device *usbdev)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static inline int snd_soc_usb_setup_offload_jack(struct snd_soc_component *component,
|
||||
struct snd_soc_jack *jack)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline struct snd_soc_usb *
|
||||
snd_soc_usb_allocate_port(struct snd_soc_component *component, void *data)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@
|
|||
*/
|
||||
#include <linux/of.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
#include <sound/jack.h>
|
||||
#include <sound/soc-usb.h>
|
||||
|
||||
#include "../usb/card.h"
|
||||
|
||||
static DEFINE_MUTEX(ctx_mutex);
|
||||
|
|
@ -52,6 +55,41 @@ static struct snd_soc_usb *snd_soc_find_usb_ctx(struct device *dev)
|
|||
return ctx ? ctx : NULL;
|
||||
}
|
||||
|
||||
/* 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 Jack",
|
||||
SND_JACK_USB, jack);
|
||||
if (ret < 0) {
|
||||
dev_err(component->card->dev, "Unable to add USB offload jack: %d\n",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_component_set_jack(component, jack, NULL);
|
||||
if (ret) {
|
||||
dev_err(component->card->dev, "Failed to set jack: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_usb_setup_offload_jack);
|
||||
|
||||
/**
|
||||
* snd_soc_usb_find_priv_data() - Retrieve private data stored
|
||||
* @usbdev: device reference
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue