aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/function/f_uac1.c
diff options
context:
space:
mode:
authorPavel Hofman <pavel.hofman@ivitera.com>2022-01-21 16:53:08 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-01-26 14:06:09 +0100
commitd1d11dd1306908bc18b6592bbd21ba7d19a931e5 (patch)
tree30dc46a8602c9558018fa0d15ad46662a899a81e /drivers/usb/gadget/function/f_uac1.c
parentusb: gadget: f_uac2: Add suspend callback (diff)
downloadlinux-dev-d1d11dd1306908bc18b6592bbd21ba7d19a931e5.tar.xz
linux-dev-d1d11dd1306908bc18b6592bbd21ba7d19a931e5.zip
usb: gadget: f_uac1: Add suspend callback
Add suspend callback to f_uac1 function, calling corresponding method of u_audio in order to stop the respective PCM streams and to notify subscribed clients about the stop. Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com> Link: https://lore.kernel.org/r/20220121155308.48794-11-pavel.hofman@ivitera.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/gadget/function/f_uac1.c')
-rw-r--r--drivers/usb/gadget/function/f_uac1.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
index 73df76a6fbe0..1484e5c231d3 100644
--- a/drivers/usb/gadget/function/f_uac1.c
+++ b/drivers/usb/gadget/function/f_uac1.c
@@ -961,6 +961,14 @@ static void f_audio_disable(struct usb_function *f)
usb_ep_disable(uac1->int_ep);
}
+static void
+f_audio_suspend(struct usb_function *f)
+{
+ struct f_uac1 *uac1 = func_to_uac1(f);
+
+ u_audio_suspend(&uac1->g_audio);
+}
+
/*-------------------------------------------------------------------------*/
static struct uac_feature_unit_descriptor *build_fu_desc(int chmask)
{
@@ -1691,6 +1699,7 @@ static struct usb_function *f_audio_alloc(struct usb_function_instance *fi)
uac1->g_audio.func.get_alt = f_audio_get_alt;
uac1->g_audio.func.setup = f_audio_setup;
uac1->g_audio.func.disable = f_audio_disable;
+ uac1->g_audio.func.suspend = f_audio_suspend;
uac1->g_audio.func.free_func = f_audio_free;
return &uac1->g_audio.func;