mirror_ubuntu-kernels/drivers/usb/gadget/function
Takashi Iwai d6468be779 usb: gadget: midi2: MIDI 1.0 interface (altset 0) support
This patch extends MIDI 2.0 function driver to add more proper support
for MIDI 1.0 interface.  Before this patch, the driver only exposes
the USB descriptor of a MIDI 1.0 interface in altset 0 while no actual
I/O is running for it.  This patch enables the actual I/O for the
altset 0; the backend UMP rawmidi is translated from/to the MIDI 1.0
USB commands.

For converting to USB MIDI 1.0 data protocol, a helper function is
copied from the existing f_midi driver, in addition to a few other UMP
Core helper functions.  For the MIDI 1.0 OUT (that is, input for
gadget), the incoming USB MIDI 1.0 packet is translated to UMP packets
via UMP Core helper, and tossed to the attached UMP rawmidi.  It's a
relatively straightforward.  OTOH, for MIDI 1.0 IN (i.e. output for
gadget), it's a bit more complex: we need to convert a source UMP
packet once to the standard MIDI 1.0 byte stream, and convert it again
to USB MIDI 1.0 packets, then send them out.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20230725062206.9674-5-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-07-26 06:38:14 +02:00
..
f_acm.c USB: gadget: f_acm: use CDC defines 2022-07-25 10:57:42 +02:00
f_ecm.c usb: gadget: f_ecm: Add suspend/resume and remote wakeup support 2023-03-29 10:27:01 +02:00
f_eem.c
f_fs.c usb: gadget: f_fs: Add unbind event before functionfs_unbind 2023-05-29 15:24:08 +01:00
f_hid.c USB: gadget: f_hid: make hidg_class a static const structure 2023-06-20 16:20:48 +02:00
f_loopback.c
f_mass_storage.c usb: gadget: f_mass_storage: remove unnecessary open check 2023-06-13 11:56:11 +02:00
f_mass_storage.h
f_midi2.c usb: gadget: midi2: MIDI 1.0 interface (altset 0) support 2023-07-26 06:38:14 +02:00
f_midi.c
f_ncm.c usb: gadget: f_ncm: fix potential NULL ptr deref in ncm_bitrate() 2023-01-17 17:10:34 +01:00
f_obex.c
f_phonet.c usb: gadget: f_phonet: Use struct_size() helper in kzalloc() 2022-01-26 14:01:28 +01:00
f_printer.c USB: gadget: f_printer: make usb_gadget_class a static const structure 2023-06-20 16:20:47 +02:00
f_rndis.c
f_serial.c usb: gadget: f_serial: Ensure gserial disconnected during unbind 2022-01-26 13:57:59 +01:00
f_sourcesink.c usb: gadget: f_sourcesink: Fix isoc transfer for USB_SPEED_SUPER_PLUS 2022-01-26 13:41:53 +01:00
f_subset.c
f_tcm.c Merge patch series "target: TMF and recovery fixes" 2023-03-24 17:39:15 -04:00
f_uac1_legacy.c
f_uac1.c usb: gadget: f_uac1: allow changing interface name via configfs 2022-01-26 14:10:40 +01:00
f_uac2.c usb: gadget: f_uac2: Fix incorrect increment of bNumEndpoints 2023-01-25 16:17:46 +01:00
f_uvc.c usb: gadget: uvc: Use custom strings if available 2023-02-07 08:46:37 +01:00
f_uvc.h
g_zero.h
Makefile usb: gadget: Add support for USB MIDI 2.0 function driver 2023-07-26 06:38:14 +02:00
ndis.h
rndis.c usb: gadget: function: rndis: limit # of RNDIS instances to 1000 2022-08-31 09:07:52 +02:00
rndis.h usb: gadget: rndis: add spinlock for rndis response list 2022-02-24 11:16:57 +01:00
storage_common.c usb: gadget: Use kstrtobool() instead of strtobool() 2022-11-03 23:46:01 +09:00
storage_common.h usb: gadget: f_mass_storage: forced_eject attribute 2022-07-14 16:06:42 +02:00
tcm.h
u_audio.c usb: gadget: u_audio: don't let userspace block driver unbind 2023-03-09 14:56:32 +01:00
u_audio.h usb: gadget: u_audio: Add suspend call 2022-01-26 14:06:09 +01:00
u_ecm.h
u_eem.h
u_ether_configfs.h
u_ether.c usb: gadget: u_ether: Fix host MAC address case 2023-05-13 18:46:59 +09:00
u_ether.h usb: gadget: f_ecm: Add suspend/resume and remote wakeup support 2023-03-29 10:27:01 +02:00
u_fs.h usb: gadget: ffs: remove ENTER() macro 2023-03-29 08:55:58 +02:00
u_gether.h
u_hid.h
u_midi2.h usb: gadget: Add support for USB MIDI 2.0 function driver 2023-07-26 06:38:14 +02:00
u_midi.h
u_ncm.h
u_phonet.h
u_printer.h
u_rndis.h
u_serial.c usb: gadget: u_serial: Add null pointer check in gs_start_io 2023-06-13 11:55:09 +02:00
u_serial.h
u_tcm.h
u_uac1_legacy.c usb: gadget: Replace runtime->status->state reference to runtime->state 2022-09-27 08:49:52 +02:00
u_uac1_legacy.h
u_uac1.h usb: gadget: f_uac1: allow changing interface name via configfs 2022-01-26 14:10:40 +01:00
u_uac2.h usb: gadget: f_uac2: Optionally determine bInterval for HS and SS 2022-01-31 14:26:18 +01:00
u_uvc.h usb: gadget: uvc: Allow linking function to string descs 2023-02-07 08:46:37 +01:00
uac_common.h usb: gadget: u_audio: Support multiple sampling rates 2022-01-26 14:06:08 +01:00
uvc_configfs.c usb: gadget: uvc: Make bmControls attr read/write 2023-03-29 08:51:26 +02:00
uvc_configfs.h usb: gadget: uvc: Allow linking XUs to string descriptors 2023-02-07 08:46:37 +01:00
uvc_queue.c Revert "usb: gadget: uvc: limit isoc_sg to super speed gadgets" 2022-10-26 14:09:06 +02:00
uvc_queue.h usb: gadget: uvc: rework uvcg_queue_next_buffer to uvcg_complete_buffer 2022-04-21 18:15:33 +02:00
uvc_v4l2.c usb: uvc: use v4l2_fill_fmtdesc instead of open coded format name 2023-01-31 09:40:43 +01:00
uvc_v4l2.h
uvc_video.c usb: gadget: uvc: clean up comments and styling in video_pump 2023-06-13 11:55:38 +02:00
uvc_video.h
uvc.h usb: gadget: uvc: Copy XU descriptors during .bind() 2023-02-07 08:46:36 +01:00