#include <linux/slab.h>
#include <linux/export.h>
#include <sound/core.h>
#include <sound/control.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include "capture.h"
#include "driver.h"
#include "playback.h"
static int snd_line6_impulse_volume_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int snd_line6_impulse_volume_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int snd_line6_impulse_volume_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int snd_line6_impulse_period_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int snd_line6_impulse_period_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int snd_line6_impulse_period_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static void line6_unlink_audio_urbs(struct snd_line6_pcm *line6pcm,
struct line6_pcm_stream *pcms)
{ … }
static void line6_wait_clear_audio_urbs(struct snd_line6_pcm *line6pcm,
struct line6_pcm_stream *pcms)
{ … }
static inline struct line6_pcm_stream *
get_stream(struct snd_line6_pcm *line6pcm, int direction)
{ … }
static int line6_buffer_acquire(struct snd_line6_pcm *line6pcm,
struct line6_pcm_stream *pstr, int direction, int type)
{ … }
static void line6_buffer_release(struct snd_line6_pcm *line6pcm,
struct line6_pcm_stream *pstr, int type)
{ … }
static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction,
int type)
{ … }
static void line6_stream_stop(struct snd_line6_pcm *line6pcm, int direction,
int type)
{ … }
int snd_line6_trigger(struct snd_pcm_substream *substream, int cmd)
{ … }
snd_pcm_uframes_t snd_line6_pointer(struct snd_pcm_substream *substream)
{ … }
int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int type, bool start)
{ … }
EXPORT_SYMBOL_GPL(…);
void line6_pcm_release(struct snd_line6_pcm *line6pcm, int type)
{ … }
EXPORT_SYMBOL_GPL(…);
int snd_line6_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *hw_params)
{ … }
int snd_line6_hw_free(struct snd_pcm_substream *substream)
{ … }
static int snd_line6_control_playback_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo)
{ … }
static int snd_line6_control_playback_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int snd_line6_control_playback_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static const struct snd_kcontrol_new line6_controls[] = …;
static void cleanup_urbs(struct line6_pcm_stream *pcms, int iso_buffers)
{ … }
static void line6_cleanup_pcm(struct snd_pcm *pcm)
{ … }
static int snd_line6_new_pcm(struct usb_line6 *line6, struct snd_pcm **pcm_ret)
{ … }
void line6_pcm_disconnect(struct snd_line6_pcm *line6pcm)
{ … }
int line6_init_pcm(struct usb_line6 *line6,
struct line6_pcm_properties *properties)
{ … }
EXPORT_SYMBOL_GPL(…);
int snd_line6_prepare(struct snd_pcm_substream *substream)
{ … }