Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753216AbdFRNYQ (ORCPT ); Sun, 18 Jun 2017 09:24:16 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:36684 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752953AbdFRNYE (ORCPT ); Sun, 18 Jun 2017 09:24:04 -0400 From: Ruslan Bilovol To: Felipe Balbi Cc: Daniel Mack , Jassi Brar , Clemens Ladisch , Jonathan Corbet , Greg Kroah-Hartman , Peter Chen , Julian Scheel , linux-usb@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/4] usb: gadget: function: make current f_uac1 implementation legacy Date: Sun, 18 Jun 2017 16:23:53 +0300 Message-Id: <1497792234-19802-4-git-send-email-ruslan.bilovol@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1497792234-19802-1-git-send-email-ruslan.bilovol@gmail.com> References: <1497792234-19802-1-git-send-email-ruslan.bilovol@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 16972 Lines: 483 Before introducing new f_uac1 function (with virtual ALSA card) make current implementation legacy. This includes renaming of existing files, some variables, config options and documentation Signed-off-by: Ruslan Bilovol --- ...gadget-uac1 => configfs-usb-gadget-uac1_legacy} | 2 +- Documentation/usb/gadget-testing.txt | 9 +++-- drivers/usb/gadget/Kconfig | 8 ++-- drivers/usb/gadget/function/Makefile | 4 +- .../gadget/function/{f_uac1.c => f_uac1_legacy.c} | 45 +++++++++++----------- .../gadget/function/{u_uac1.c => u_uac1_legacy.c} | 7 ++-- .../gadget/function/{u_uac1.h => u_uac1_legacy.h} | 8 ++-- drivers/usb/gadget/legacy/Kconfig | 6 +-- drivers/usb/gadget/legacy/audio.c | 26 ++++++------- 9 files changed, 59 insertions(+), 56 deletions(-) rename Documentation/ABI/testing/{configfs-usb-gadget-uac1 => configfs-usb-gadget-uac1_legacy} (84%) rename drivers/usb/gadget/function/{f_uac1.c => f_uac1_legacy.c} (95%) rename drivers/usb/gadget/function/{u_uac1.c => u_uac1_legacy.c} (98%) rename drivers/usb/gadget/function/{u_uac1.h => u_uac1_legacy.h} (94%) diff --git a/Documentation/ABI/testing/configfs-usb-gadget-uac1 b/Documentation/ABI/testing/configfs-usb-gadget-uac1_legacy similarity index 84% rename from Documentation/ABI/testing/configfs-usb-gadget-uac1 rename to Documentation/ABI/testing/configfs-usb-gadget-uac1_legacy index 8ba9a12..b2eaefd 100644 --- a/Documentation/ABI/testing/configfs-usb-gadget-uac1 +++ b/Documentation/ABI/testing/configfs-usb-gadget-uac1_legacy @@ -1,4 +1,4 @@ -What: /config/usb-gadget/gadget/functions/uac1.name +What: /config/usb-gadget/gadget/functions/uac1_legacy.name Date: Sep 2014 KernelVersion: 3.18 Description: diff --git a/Documentation/usb/gadget-testing.txt b/Documentation/usb/gadget-testing.txt index fb0cc4d..ce51d6e 100644 --- a/Documentation/usb/gadget-testing.txt +++ b/Documentation/usb/gadget-testing.txt @@ -16,7 +16,7 @@ provided by gadgets. 13. RNDIS function 14. SERIAL function 15. SOURCESINK function -16. UAC1 function +16. UAC1 function (legacy implementation) 17. UAC2 function 18. UVC function 19. PRINTER function @@ -589,15 +589,16 @@ device: run the gadget host: test-usb (tools/usb/testusb.c) -16. UAC1 function +16. UAC1 function (legacy implementation) ================= -The function is provided by usb_f_uac1.ko module. +The function is provided by usb_f_uac1_legacy.ko module. Function-specific configfs interface ------------------------------------ -The function name to use when creating the function directory is "uac1". +The function name to use when creating the function directory +is "uac1_legacy". The uac1 function provides these attributes in its function directory: audio_buf_size - audio buffer size diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 3b0ffd6..01c2e2b 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -191,7 +191,7 @@ config USB_F_MASS_STORAGE config USB_F_FS tristate -config USB_F_UAC1 +config USB_F_UAC1_LEGACY tristate config USB_F_UAC2 @@ -365,13 +365,13 @@ config USB_CONFIGFS_F_FS implemented in kernel space (for instance Ethernet, serial or mass storage) and other are implemented in user space. -config USB_CONFIGFS_F_UAC1 - bool "Audio Class 1.0" +config USB_CONFIGFS_F_UAC1_LEGACY + bool "Audio Class 1.0 (legacy implementation)" depends on USB_CONFIGFS depends on SND select USB_LIBCOMPOSITE select SND_PCM - select USB_F_UAC1 + select USB_F_UAC1_LEGACY help This Audio function implements 1 AudioControl interface, 1 AudioStreaming Interface each for USB-OUT and USB-IN. diff --git a/drivers/usb/gadget/function/Makefile b/drivers/usb/gadget/function/Makefile index b29f2ae..50ee517 100644 --- a/drivers/usb/gadget/function/Makefile +++ b/drivers/usb/gadget/function/Makefile @@ -33,8 +33,8 @@ obj-$(CONFIG_USB_F_MASS_STORAGE)+= usb_f_mass_storage.o usb_f_fs-y := f_fs.o obj-$(CONFIG_USB_F_FS) += usb_f_fs.o obj-$(CONFIG_USB_U_AUDIO) += u_audio.o -usb_f_uac1-y := f_uac1.o u_uac1.o -obj-$(CONFIG_USB_F_UAC1) += usb_f_uac1.o +usb_f_uac1_legacy-y := f_uac1_legacy.o u_uac1_legacy.o +obj-$(CONFIG_USB_F_UAC1_LEGACY) += usb_f_uac1_legacy.o usb_f_uac2-y := f_uac2.o obj-$(CONFIG_USB_F_UAC2) += usb_f_uac2.o usb_f_uvc-y := f_uvc.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_configfs.o diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1_legacy.c similarity index 95% rename from drivers/usb/gadget/function/f_uac1.c rename to drivers/usb/gadget/function/f_uac1_legacy.c index 5dfc94b..5d229e7 100644 --- a/drivers/usb/gadget/function/f_uac1.c +++ b/drivers/usb/gadget/function/f_uac1_legacy.c @@ -15,7 +15,7 @@ #include #include -#include "u_uac1.h" +#include "u_uac1_legacy.h" static int generic_set_cmd(struct usb_audio_control *con, u8 cmd, int value); static int generic_get_cmd(struct usb_audio_control *con, u8 cmd); @@ -326,11 +326,11 @@ static int f_audio_out_ep_complete(struct usb_ep *ep, struct usb_request *req) struct f_audio *audio = req->context; struct usb_composite_dev *cdev = audio->card.func.config->cdev; struct f_audio_buf *copy_buf = audio->copy_buf; - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; int audio_buf_size; int err; - opts = container_of(audio->card.func.fi, struct f_uac1_opts, + opts = container_of(audio->card.func.fi, struct f_uac1_legacy_opts, func_inst); audio_buf_size = opts->audio_buf_size; @@ -578,13 +578,13 @@ static int f_audio_set_alt(struct usb_function *f, unsigned intf, unsigned alt) struct usb_composite_dev *cdev = f->config->cdev; struct usb_ep *out_ep = audio->out_ep; struct usb_request *req; - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; int req_buf_size, req_count, audio_buf_size; int i = 0, err = 0; DBG(cdev, "intf %d, alt %d\n", intf, alt); - opts = container_of(f->fi, struct f_uac1_opts, func_inst); + opts = container_of(f->fi, struct f_uac1_legacy_opts, func_inst); req_buf_size = opts->req_buf_size; req_count = opts->req_count; audio_buf_size = opts->audio_buf_size; @@ -705,9 +705,9 @@ static void f_audio_build_desc(struct f_audio *audio) struct usb_string *us; int status; struct usb_ep *ep = NULL; - struct f_uac1_opts *audio_opts; + struct f_uac1_legacy_opts *audio_opts; - audio_opts = container_of(f->fi, struct f_uac1_opts, func_inst); + audio_opts = container_of(f->fi, struct f_uac1_legacy_opts, func_inst); audio->card.gadget = c->cdev->gadget; /* set up ASLA audio devices */ if (!audio_opts->bound) { @@ -801,15 +801,16 @@ static int control_selector_init(struct f_audio *audio) return 0; } -static inline struct f_uac1_opts *to_f_uac1_opts(struct config_item *item) +static inline +struct f_uac1_legacy_opts *to_f_uac1_opts(struct config_item *item) { - return container_of(to_config_group(item), struct f_uac1_opts, + return container_of(to_config_group(item), struct f_uac1_legacy_opts, func_inst.group); } static void f_uac1_attr_release(struct config_item *item) { - struct f_uac1_opts *opts = to_f_uac1_opts(item); + struct f_uac1_legacy_opts *opts = to_f_uac1_opts(item); usb_put_function_instance(&opts->func_inst); } @@ -822,7 +823,7 @@ static void f_uac1_attr_release(struct config_item *item) static ssize_t f_uac1_opts_##name##_show(struct config_item *item, \ char *page) \ { \ - struct f_uac1_opts *opts = to_f_uac1_opts(item); \ + struct f_uac1_legacy_opts *opts = to_f_uac1_opts(item); \ int result; \ \ mutex_lock(&opts->lock); \ @@ -835,7 +836,7 @@ static void f_uac1_attr_release(struct config_item *item) static ssize_t f_uac1_opts_##name##_store(struct config_item *item, \ const char *page, size_t len) \ { \ - struct f_uac1_opts *opts = to_f_uac1_opts(item); \ + struct f_uac1_legacy_opts *opts = to_f_uac1_opts(item); \ int ret; \ u32 num; \ \ @@ -867,7 +868,7 @@ static void f_uac1_attr_release(struct config_item *item) static ssize_t f_uac1_opts_##name##_show(struct config_item *item, \ char *page) \ { \ - struct f_uac1_opts *opts = to_f_uac1_opts(item); \ + struct f_uac1_legacy_opts *opts = to_f_uac1_opts(item); \ int result; \ \ mutex_lock(&opts->lock); \ @@ -880,7 +881,7 @@ static void f_uac1_attr_release(struct config_item *item) static ssize_t f_uac1_opts_##name##_store(struct config_item *item, \ const char *page, size_t len) \ { \ - struct f_uac1_opts *opts = to_f_uac1_opts(item); \ + struct f_uac1_legacy_opts *opts = to_f_uac1_opts(item); \ int ret = -EBUSY; \ char *tmp; \ \ @@ -928,9 +929,9 @@ static void f_uac1_attr_release(struct config_item *item) static void f_audio_free_inst(struct usb_function_instance *f) { - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; - opts = container_of(f, struct f_uac1_opts, func_inst); + opts = container_of(f, struct f_uac1_legacy_opts, func_inst); if (opts->fn_play_alloc) kfree(opts->fn_play); if (opts->fn_cap_alloc) @@ -942,7 +943,7 @@ static void f_audio_free_inst(struct usb_function_instance *f) static struct usb_function_instance *f_audio_alloc_inst(void) { - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; opts = kzalloc(sizeof(*opts), GFP_KERNEL); if (!opts) @@ -966,10 +967,10 @@ static struct usb_function_instance *f_audio_alloc_inst(void) static void f_audio_free(struct usb_function *f) { struct f_audio *audio = func_to_audio(f); - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; gaudio_cleanup(&audio->card); - opts = container_of(f->fi, struct f_uac1_opts, func_inst); + opts = container_of(f->fi, struct f_uac1_legacy_opts, func_inst); kfree(audio); mutex_lock(&opts->lock); --opts->refcnt; @@ -984,7 +985,7 @@ static void f_audio_unbind(struct usb_configuration *c, struct usb_function *f) static struct usb_function *f_audio_alloc(struct usb_function_instance *fi) { struct f_audio *audio; - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; /* allocate and initialize one new instance */ audio = kzalloc(sizeof(*audio), GFP_KERNEL); @@ -993,7 +994,7 @@ static struct usb_function *f_audio_alloc(struct usb_function_instance *fi) audio->card.func.name = "g_audio"; - opts = container_of(fi, struct f_uac1_opts, func_inst); + opts = container_of(fi, struct f_uac1_legacy_opts, func_inst); mutex_lock(&opts->lock); ++opts->refcnt; mutex_unlock(&opts->lock); @@ -1015,6 +1016,6 @@ static struct usb_function *f_audio_alloc(struct usb_function_instance *fi) return &audio->card.func; } -DECLARE_USB_FUNCTION_INIT(uac1, f_audio_alloc_inst, f_audio_alloc); +DECLARE_USB_FUNCTION_INIT(uac1_legacy, f_audio_alloc_inst, f_audio_alloc); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Bryan Wu"); diff --git a/drivers/usb/gadget/function/u_uac1.c b/drivers/usb/gadget/function/u_uac1_legacy.c similarity index 98% rename from drivers/usb/gadget/function/u_uac1.c rename to drivers/usb/gadget/function/u_uac1_legacy.c index c78c841..8aa76b4 100644 --- a/drivers/usb/gadget/function/u_uac1.c +++ b/drivers/usb/gadget/function/u_uac1_legacy.c @@ -18,7 +18,7 @@ #include #include -#include "u_uac1.h" +#include "u_uac1_legacy.h" /* * This component encapsulates the ALSA devices for USB audio gadget @@ -205,10 +205,11 @@ static int gaudio_open_snd_dev(struct gaudio *card) { struct snd_pcm_file *pcm_file; struct gaudio_snd_dev *snd; - struct f_uac1_opts *opts; + struct f_uac1_legacy_opts *opts; char *fn_play, *fn_cap, *fn_cntl; - opts = container_of(card->func.fi, struct f_uac1_opts, func_inst); + opts = container_of(card->func.fi, struct f_uac1_legacy_opts, + func_inst); fn_play = opts->fn_play; fn_cap = opts->fn_cap; fn_cntl = opts->fn_cntl; diff --git a/drivers/usb/gadget/function/u_uac1.h b/drivers/usb/gadget/function/u_uac1_legacy.h similarity index 94% rename from drivers/usb/gadget/function/u_uac1.h rename to drivers/usb/gadget/function/u_uac1_legacy.h index 5c2ac8e..d715b1a 100644 --- a/drivers/usb/gadget/function/u_uac1.h +++ b/drivers/usb/gadget/function/u_uac1_legacy.h @@ -9,8 +9,8 @@ * Licensed under the GPL-2 or later. */ -#ifndef __U_AUDIO_H -#define __U_AUDIO_H +#ifndef __U_UAC1_LEGACY_H +#define __U_UAC1_LEGACY_H #include #include @@ -56,7 +56,7 @@ struct gaudio { /* TODO */ }; -struct f_uac1_opts { +struct f_uac1_legacy_opts { struct usb_function_instance func_inst; int req_buf_size; int req_count; @@ -79,4 +79,4 @@ struct f_uac1_opts { int u_audio_get_playback_channels(struct gaudio *card); int u_audio_get_playback_rate(struct gaudio *card); -#endif /* __U_AUDIO_H */ +#endif /* __U_UAC1_LEGACY_H */ diff --git a/drivers/usb/gadget/legacy/Kconfig b/drivers/usb/gadget/legacy/Kconfig index 5344064..87bacb6 100644 --- a/drivers/usb/gadget/legacy/Kconfig +++ b/drivers/usb/gadget/legacy/Kconfig @@ -54,8 +54,8 @@ config USB_AUDIO depends on SND select USB_LIBCOMPOSITE select SND_PCM - select USB_F_UAC1 if GADGET_UAC1 - select USB_F_UAC2 if !GADGET_UAC1 + select USB_F_UAC1_LEGACY if GADGET_UAC1_LEGACY + select USB_F_UAC2 if !GADGET_UAC1_LEGACY select USB_U_AUDIO if USB_F_UAC2 help This Gadget Audio driver is compatible with USB Audio Class @@ -73,7 +73,7 @@ config USB_AUDIO Say "y" to link the driver statically, or "m" to build a dynamically linked module called "g_audio". -config GADGET_UAC1 +config GADGET_UAC1_LEGACY bool "UAC 1.0 (Legacy)" depends on USB_AUDIO help diff --git a/drivers/usb/gadget/legacy/audio.c b/drivers/usb/gadget/legacy/audio.c index 8a39f42..bf5592a 100644 --- a/drivers/usb/gadget/legacy/audio.c +++ b/drivers/usb/gadget/legacy/audio.c @@ -20,7 +20,7 @@ USB_GADGET_COMPOSITE_OPTIONS(); -#ifndef CONFIG_GADGET_UAC1 +#ifndef CONFIG_GADGET_UAC1_LEGACY #include "u_uac2.h" /* Playback(USB-IN) Default Stereo - Fl/Fr */ @@ -53,7 +53,7 @@ module_param(c_ssize, uint, S_IRUGO); MODULE_PARM_DESC(c_ssize, "Capture Sample Size(bytes)"); #else -#include "u_uac1.h" +#include "u_uac1_legacy.h" static char *fn_play = FILE_PCM_PLAYBACK; module_param(fn_play, charp, S_IRUGO); @@ -99,7 +99,7 @@ NULL, }; -#ifndef CONFIG_GADGET_UAC1 +#ifndef CONFIG_GADGET_UAC1_LEGACY static struct usb_function_instance *fi_uac2; static struct usb_function *f_uac2; #else @@ -125,7 +125,7 @@ /* .bcdUSB = DYNAMIC */ -#ifdef CONFIG_GADGET_UAC1 +#ifdef CONFIG_GADGET_UAC1_LEGACY .bDeviceClass = USB_CLASS_PER_INTERFACE, .bDeviceSubClass = 0, .bDeviceProtocol = 0, @@ -164,7 +164,7 @@ static int audio_do_config(struct usb_configuration *c) c->bmAttributes |= USB_CONFIG_ATT_WAKEUP; } -#ifdef CONFIG_GADGET_UAC1 +#ifdef CONFIG_GADGET_UAC1_LEGACY f_uac1 = usb_get_function(fi_uac1); if (IS_ERR(f_uac1)) { status = PTR_ERR(f_uac1); @@ -204,24 +204,24 @@ static int audio_do_config(struct usb_configuration *c) static int audio_bind(struct usb_composite_dev *cdev) { -#ifndef CONFIG_GADGET_UAC1 +#ifndef CONFIG_GADGET_UAC1_LEGACY struct f_uac2_opts *uac2_opts; #else - struct f_uac1_opts *uac1_opts; + struct f_uac1_legacy_opts *uac1_opts; #endif int status; -#ifndef CONFIG_GADGET_UAC1 +#ifndef CONFIG_GADGET_UAC1_LEGACY fi_uac2 = usb_get_function_instance("uac2"); if (IS_ERR(fi_uac2)) return PTR_ERR(fi_uac2); #else - fi_uac1 = usb_get_function_instance("uac1"); + fi_uac1 = usb_get_function_instance("uac1_legacy"); if (IS_ERR(fi_uac1)) return PTR_ERR(fi_uac1); #endif -#ifndef CONFIG_GADGET_UAC1 +#ifndef CONFIG_GADGET_UAC1_LEGACY uac2_opts = container_of(fi_uac2, struct f_uac2_opts, func_inst); uac2_opts->p_chmask = p_chmask; uac2_opts->p_srate = p_srate; @@ -231,7 +231,7 @@ static int audio_bind(struct usb_composite_dev *cdev) uac2_opts->c_ssize = c_ssize; uac2_opts->req_number = UAC2_DEF_REQ_NUM; #else - uac1_opts = container_of(fi_uac1, struct f_uac1_opts, func_inst); + uac1_opts = container_of(fi_uac1, struct f_uac1_legacy_opts, func_inst); uac1_opts->fn_play = fn_play; uac1_opts->fn_cap = fn_cap; uac1_opts->fn_cntl = fn_cntl; @@ -269,7 +269,7 @@ static int audio_bind(struct usb_composite_dev *cdev) kfree(otg_desc[0]); otg_desc[0] = NULL; fail: -#ifndef CONFIG_GADGET_UAC1 +#ifndef CONFIG_GADGET_UAC1_LEGACY usb_put_function_instance(fi_uac2); #else usb_put_function_instance(fi_uac1); @@ -279,7 +279,7 @@ static int audio_bind(struct usb_composite_dev *cdev) static int audio_unbind(struct usb_composite_dev *cdev) { -#ifdef CONFIG_GADGET_UAC1 +#ifdef CONFIG_GADGET_UAC1_LEGACY if (!IS_ERR_OR_NULL(f_uac1)) usb_put_function(f_uac1); if (!IS_ERR_OR_NULL(fi_uac1)) -- 1.9.1