#include <linux/kernel.h>
#include <linux/mempool.h>
#include <linux/poll.h>
#include <linux/kthread.h>
#include <linux/freezer.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/initval.h>
#include <sound/pcm.h>
#include <sound/control.h>
#include "solo6x10.h"
#include "solo6x10-tw28.h"
#define G723_FDMA_PAGES …
#define G723_PERIOD_BYTES …
#define G723_PERIOD_BLOCK …
#define G723_FRAMES_PER_PAGE …
#define OUTMODE_MASK …
#define SAMPLERATE …
#define BITRATE …
#define PERIODS …
#define G723_INTR_ORDER …
struct solo_snd_pcm { … };
static void solo_g723_config(struct solo_dev *solo_dev)
{ … }
void solo_g723_isr(struct solo_dev *solo_dev)
{ … }
static const struct snd_pcm_hardware snd_solo_pcm_hw = …;
static int snd_solo_pcm_open(struct snd_pcm_substream *ss)
{ … }
static int snd_solo_pcm_close(struct snd_pcm_substream *ss)
{ … }
static int snd_solo_pcm_trigger(struct snd_pcm_substream *ss, int cmd)
{ … }
static int snd_solo_pcm_prepare(struct snd_pcm_substream *ss)
{ … }
static snd_pcm_uframes_t snd_solo_pcm_pointer(struct snd_pcm_substream *ss)
{ … }
static int snd_solo_pcm_copy(struct snd_pcm_substream *ss, int channel,
unsigned long pos, struct iov_iter *dst,
unsigned long count)
{ … }
static const struct snd_pcm_ops snd_solo_pcm_ops = …;
static int snd_solo_capture_volume_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *info)
{ … }
static int snd_solo_capture_volume_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *value)
{ … }
static int snd_solo_capture_volume_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *value)
{ … }
static const struct snd_kcontrol_new snd_solo_capture_volume = …;
static int solo_snd_pcm_init(struct solo_dev *solo_dev)
{ … }
int solo_g723_init(struct solo_dev *solo_dev)
{ … }
void solo_g723_exit(struct solo_dev *solo_dev)
{ … }