linux/drivers/media/pci/solo6x10/solo6x10-g723.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2010-2013 Bluecherry, LLC <https://www.bluecherrydvr.com>
 *
 * Original author:
 * Ben Collins <[email protected]>
 *
 * Additional work by:
 * John Brooks <[email protected]>
 */

#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

/* Sets up channels 16-19 for decoding and 0-15 for encoding */
#define OUTMODE_MASK

#define SAMPLERATE
#define BITRATE

/* The solo writes to 1k byte pages, 32 pages, in the dma. Each 1k page
 * is broken down to 20 * 48 byte regions (one for each channel possible)
 * with the rest of the page being dummy data. */
#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)
{}