aboutsummaryrefslogtreecommitdiff
path: root/sound/usb/usbaudio.h
diff options
context:
space:
mode:
authorDaniel Mack <zonque@gmail.com>2012-04-12 13:51:11 +0200
committerTakashi Iwai <tiwai@suse.de>2012-04-13 10:23:42 +0200
commit8fdff6a319e7dac757c558bd283dc4577e68cde7 (patch)
tree7f6858f46ac95f771776148af228a0db98dbde38 /sound/usb/usbaudio.h
parent596580d0ee1d17af70920a7bb06c963418014dd1 (diff)
ALSA: snd-usb: implement new endpoint streaming model
This patch adds a new generic streaming logic for audio over USB. It defines a model (snd_usb_endpoint) that handles everything that is related to an USB endpoint and its streaming. There are functions to activate and deactivate an endpoint (which call usb_set_interface()), and to start and stop its URBs. It also has function pointers to be called when data was received or is about to be sent, and pointer to a sync slave (another snd_usb_endpoint) that is informed when data has been received. A snd_usb_endpoint knows about its state and implements a refcounting, so only the first user will actually start the URBs and only the last one to stop it will tear them down again. With this sort of abstraction, the actual streaming is decoupled from the pcm handling, which makes the "implicit feedback" mechanisms easy to implement. In order to split changes properly, this patch only adds the new implementation but leaves the old one around, so the the driver doesn't change its behaviour. The switch to actually use the new code is submitted separately. Signed-off-by: Daniel Mack <zonque@gmail.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/usbaudio.h')
-rw-r--r--sound/usb/usbaudio.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index a16c21d2d7e..b8233ebe250 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -47,6 +47,7 @@ struct snd_usb_audio {
int num_suspended_intf;
struct list_head pcm_list; /* list of pcm streams */
+ struct list_head ep_list; /* list of audio-related endpoints */
int pcm_devs;
struct list_head midi_list; /* list of midi interfaces */