diff options
author | Bryan Wu <cooloney@kernel.org> | 2009-06-03 09:17:58 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-15 21:44:47 -0700 |
commit | c6994e6f067cf0fc4c6cca3d164018b1150916f8 (patch) | |
tree | d971c529cbd4684e5c1c5fcb67f3f09d1cca4295 /drivers/usb/gadget/u_audio.h | |
parent | c47d7b09891abb4f8b222317c89c7469bed8db3a (diff) | |
download | op-kernel-dev-c6994e6f067cf0fc4c6cca3d164018b1150916f8.zip op-kernel-dev-c6994e6f067cf0fc4c6cca3d164018b1150916f8.tar.gz |
USB: gadget: add USB Audio Gadget driver
Funtions added:
- setup all the USB audio class device descriptors
- handle class specific setup request
- receive data from USB host by ISO transfer
- play audio data by ALSA sound card
- open and setup playback PCM interface
- set default playback PCM parameters
- provide playback functions for USB audio driver
- provide PCM parameters set/get functions
Test on:
- Host: Ubuntu 8.10, kernel 2.6.27
- Gadget: EZKIT-BF548 with ASoC AD1980 codec
Todo:
- add real Mute control code
- add real Volume control code
- maybe find another way to replace dynamic buffer handling
with static buffer allocation
- test on Windows system
- provide control interface to handle mute/volume control
- provide capture interface in the future
- test on BF527, other USB device controler and other audio codec
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/u_audio.h')
-rw-r--r-- | drivers/usb/gadget/u_audio.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/drivers/usb/gadget/u_audio.h b/drivers/usb/gadget/u_audio.h new file mode 100644 index 0000000..cc8d159 --- /dev/null +++ b/drivers/usb/gadget/u_audio.h @@ -0,0 +1,56 @@ +/* + * u_audio.h -- interface to USB gadget "ALSA AUDIO" utilities + * + * Copyright (C) 2008 Bryan Wu <cooloney@kernel.org> + * Copyright (C) 2008 Analog Devices, Inc + * + * Enter bugs at http://blackfin.uclinux.org/ + * + * Licensed under the GPL-2 or later. + */ + +#ifndef __U_AUDIO_H +#define __U_AUDIO_H + +#include <linux/device.h> +#include <linux/err.h> +#include <linux/usb/audio.h> +#include <linux/usb/composite.h> + +#include <sound/core.h> +#include <sound/pcm.h> +#include <sound/pcm_params.h> + +#include "gadget_chips.h" + +/* + * This represents the USB side of an audio card device, managed by a USB + * function which provides control and stream interfaces. + */ + +struct gaudio_snd_dev { + struct gaudio *card; + struct file *filp; + struct snd_pcm_substream *substream; + int access; + int format; + int channels; + int rate; +}; + +struct gaudio { + struct usb_function func; + struct usb_gadget *gadget; + + /* ALSA sound device interfaces */ + struct gaudio_snd_dev control; + struct gaudio_snd_dev playback; + struct gaudio_snd_dev capture; + + /* TODO */ +}; + +int gaudio_setup(struct gaudio *card); +void gaudio_cleanup(struct gaudio *card); + +#endif /* __U_AUDIO_H */ |