Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2ebf92c authored by Ben Williamson's avatar Ben Williamson Committed by Greg Kroah-Hartman
Browse files

USB: gmidi: New USB MIDI Gadget class driver.



This driver is glue between the USB gadget interface
and the ALSA MIDI interface. It allows us to appear
as a MIDI Streaming device to a host system on the
other end of a USB cable.

This includes linux/usb/audio.h and linux/usb/midi.h
containing definitions from the relevant USB specifications
for USB audio and USB MIDI devices.

The following changes have been made since the first RFC
posting:

* Bug fixes to endpoint handling.
* Workaround for USB_REQ_SET_CONFIGURATION handling,
  not understood yet.
* Added SND and SND_RAWMIDI dependencies in Kconfig.
* Moved usb_audio.h and usb_midi.h to usb/*.h
* Added module parameters for ALSA card index and id.
* Added module parameters for USB descriptor IDs and strings.
* Removed some unneeded stuff inherited from zero.c, more to go.
* Provide DECLARE_* macros for the variable-length structs.
* Use kmalloc instead of usb_ep_alloc_buffer.
* Limit source to 80 columns.
* Return actual error code instead of -ENOMEM in a few places.

Signed-off-by: default avatarBen Williamson <ben.williamson@greyinnovation.com>
Cc: David Brownell <david-b@pacbell.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent ba307f58
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -404,6 +404,20 @@ config USB_G_SERIAL
	  which includes instructions and a "driver info file" needed to
	  make MS-Windows work with this driver.

config USB_MIDI_GADGET
	tristate "MIDI Gadget (EXPERIMENTAL)"
	depends on SND && EXPERIMENTAL
	select SND_RAWMIDI
	help
	  The MIDI Gadget acts as a USB Audio device, with one MIDI
	  input and one MIDI output. These MIDI jacks appear as
	  a sound "card" in the ALSA sound system. Other MIDI
	  connections can then be made on the gadget system, using
	  ALSA's aconnect utility etc.

	  Say "y" to link the driver statically, or "m" to build a
	  dynamically linked module called "g_midi".


# put drivers that need isochronous transfer support (for audio
# or video class gadget drivers), or specific hardware, here.
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ obj-$(CONFIG_USB_AT91) += at91_udc.o
g_zero-objs			:= zero.o usbstring.o config.o epautoconf.o
g_ether-objs			:= ether.o usbstring.o config.o epautoconf.o
g_serial-objs			:= serial.o usbstring.o config.o epautoconf.o
g_midi-objs			:= gmidi.o usbstring.o config.o epautoconf.o
gadgetfs-objs			:= inode.o
g_file_storage-objs		:= file_storage.o usbstring.o config.o \
					epautoconf.o
@@ -28,4 +29,5 @@ obj-$(CONFIG_USB_ETH) += g_ether.o
obj-$(CONFIG_USB_GADGETFS)	+= gadgetfs.o
obj-$(CONFIG_USB_FILE_STORAGE)	+= g_file_storage.o
obj-$(CONFIG_USB_G_SERIAL)	+= g_serial.o
obj-$(CONFIG_USB_MIDI_GADGET)	+= g_midi.o