mirror_ubuntu-kernels/drivers/usb/gadget/function
Ruslan Bilovol e89bb42883 usb: gadget: u_audio: add real feedback implementation
This adds interface between userspace and feedback endpoint to report real
feedback frequency to the Host.

Current implementation adds new userspace interface ALSA mixer control
"Capture Pitch 1000000" (similar to aloop driver's "PCM Rate Shift 100000"
mixer control)

Value in PPM is chosen to have correction value agnostic of the actual HW
rate, which the application is not necessarily dealing with, while still
retaining a good enough precision to allow smooth clock correction on the
playback side, if necessary.

Similar to sound/usb/endpoint.c, a slow down is allowed up to 25%. This
has no impact on the required bandwidth. Speedup correction has an impact
on the bandwidth reserved for the isochronous endpoint. The default
allowed speedup is 500ppm. This seems to be more than enough but, if
necessary, this is configurable through a module parameter. The reserved
bandwidth is rounded up to the next packet size.

Usage of this new control is easy to implement in existing userspace tools
like alsaloop from alsa-utils.

Signed-off-by: Ruslan Bilovol <ruslan.bilovol@gmail.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/20210603220104.1216001-4-jbrunet@baylibre.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-09 11:26:49 +02:00
..
f_acm.c USB: gadget: f_acm: add support for SuperSpeed Plus 2020-12-10 16:12:20 +01:00
f_ecm.c
f_eem.c usb: gadget: function: remove redundant assignment to variable 'status' 2020-05-25 11:09:39 +03:00
f_fs.c usb: gadget: f_fs: Fix setting of device and driver data cross-references 2021-06-09 11:24:09 +02:00
f_hid.c usb: gadget: function: fix typo in f_hid.c 2021-05-10 11:16:10 +02:00
f_loopback.c usb: Fix fall-through warnings for Clang 2020-11-23 17:46:01 +01:00
f_mass_storage.c usb: gadget: storage: Remove unused function pointer typedef fsg_routine_t 2021-03-10 09:37:15 +01:00
f_mass_storage.h
f_midi.c usb/gadget: f_midi: Replace tasklet with work 2021-01-12 12:52:28 +01:00
f_ncm.c usb: gadget: f_ncm: allow using NCM in SuperSpeed Plus gadgets. 2020-10-02 09:57:41 +03:00
f_obex.c
f_phonet.c usb: gadget: Use fallthrough pseudo-keyword 2020-07-10 08:55:18 +02:00
f_printer.c usb: gadget: function: printer: use list_move instead of list_del/list_add 2021-06-09 11:11:30 +02:00
f_rndis.c USB: gadget: f_rndis: fix bitrate for SuperSpeed and above 2020-12-10 16:12:16 +01:00
f_serial.c usb: gadget: f_serial: add suspend resume callbacks 2020-05-25 11:09:39 +03:00
f_sourcesink.c usb: Fix fall-through warnings for Clang 2020-11-23 17:46:01 +01:00
f_subset.c
f_tcm.c scsi: target: usb: gadget: Convert to new submission API 2021-03-04 17:37:01 -05:00
f_uac1_legacy.c usb: gadget: function: fix missing spinlock in f_uac1_legacy 2020-07-09 10:13:07 +03:00
f_uac1.c usb: gadget: f_uac1: disable IN/OUT ep if unused 2021-03-23 12:54:56 +01:00
f_uac2.c usb: gadget: u_audio: add real feedback implementation 2021-06-09 11:26:49 +02:00
f_uvc.c usb: webcam: Invalid size of Processing Unit Descriptor 2021-03-18 09:02:27 +01:00
f_uvc.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
g_zero.h
Makefile
ndis.h
rndis.c
rndis.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
storage_common.c block: remove i_bdev 2020-12-01 14:53:39 -07:00
storage_common.h scsi: treewide: Consolidate {get,put}_unaligned_[bl]e24() definitions 2020-03-16 22:08:34 -04:00
tcm.h
u_audio.c usb: gadget: u_audio: add real feedback implementation 2021-06-09 11:26:49 +02:00
u_audio.h usb: gadget: u_audio: add real feedback implementation 2021-06-09 11:26:49 +02:00
u_ecm.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_eem.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_ether_configfs.h USB: gadget: u_ether: Fix a configfs return code 2021-03-10 09:36:12 +01:00
u_ether.c usb: gadget: u_ether: support configuring interface names. 2021-01-15 16:08:53 +01:00
u_ether.h usb: gadget: u_ether: support configuring interface names. 2021-01-15 16:08:53 +01:00
u_fs.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_gether.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_hid.h usb: gadget: function: Fix inconsistent indent 2021-05-10 11:16:10 +02:00
u_midi.h usb: gadget: function: Fix inconsistent indent 2021-05-10 11:16:10 +02:00
u_ncm.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_phonet.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_printer.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_rndis.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_serial.c usb: gadget: u_serial: Remove old tasklet comments 2021-01-19 13:30:52 +01:00
u_serial.h usb: gadget: u_serial.h: increase MAX_U_SERIAL_PORTS to 8 2020-06-18 10:23:22 +02:00
u_tcm.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_uac1_legacy.c usb: gadget: function: u_uac1_legacy: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-09 17:19:58 +02:00
u_uac1_legacy.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_uac1.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
u_uac2.h usb: gadget: u_audio: add real feedback implementation 2021-06-09 11:26:49 +02:00
u_uvc.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
uvc_configfs.c usb: gadget: Drop unnecessary NULL checks after container_of 2021-05-10 11:16:10 +02:00
uvc_configfs.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
uvc_queue.c
uvc_queue.h
uvc_v4l2.c usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00
uvc_v4l2.h USB: gadget: Use the correct style for SPDX License Identifier 2020-05-05 10:58:49 +03:00
uvc_video.c usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00
uvc_video.h usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00
uvc.h usb: gadget: uvc_video: add worker to handle the frame pumping 2020-05-25 11:09:38 +03:00