On 10/17/23 15:00, Wesley Cheng wrote:
Introduce a check for if a particular PCM format is supported by the USB
Introduce a helper to check if a ...
audio device connected. If the USB audio device does not have an audio profile which can support the requested format, then notify the USB backend.
Signed-off-by: Wesley Cheng quic_wcheng@quicinc.com
include/sound/soc-usb.h | 3 +++ sound/soc/soc-usb.c | 13 +++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/include/sound/soc-usb.h b/include/sound/soc-usb.h index 58c686f4f7ba..c6ddc055c4cd 100644 --- a/include/sound/soc-usb.h +++ b/include/sound/soc-usb.h @@ -37,6 +37,9 @@ struct snd_soc_usb { void *priv_data; };
+int snd_soc_usb_find_format(int card_idx, struct snd_pcm_hw_params *params,
int direction);
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); diff --git a/sound/soc/soc-usb.c b/sound/soc/soc-usb.c index 73b1bcc3b506..7407678a993e 100644 --- a/sound/soc/soc-usb.c +++ b/sound/soc/soc-usb.c @@ -63,6 +63,19 @@ void *snd_soc_usb_find_priv_data(struct device *dev) } EXPORT_SYMBOL_GPL(snd_soc_usb_find_priv_data);
+int snd_soc_usb_find_format(int card_idx, struct snd_pcm_hw_params *params,
int direction)
+{
- struct snd_usb_stream *as;
- as = snd_usb_find_suppported_substream(card_idx, params, direction);
- if (!as)
return -EOPNOTSUPP;
- return 0;
+} +EXPORT_SYMBOL_GPL(snd_soc_usb_find_format);
Is this the right way to check for formats?
formats are defined within the scope of an endpoint, and those endpoints are themselves defined within the scope of an interface?
I don't see a notion of endpoint here. Does this assume all endpoints are valid, or maybe the existence of a single endpoint in a device?
Confused.