• Takashi Iwai's avatar
    usb: gadget: midi2: MIDI 1.0 interface (altset 0) support · d6468be7
    Takashi Iwai authored
    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: default avatarTakashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20230725062206.9674-5-tiwai@suse.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d6468be7
f_midi2.c 69.4 KB