linux/drivers/media/usb/em28xx/em28xx-audio.c

// SPDX-License-Identifier: GPL-2.0+
//
// Empiatech em28x1 audio extension
//
// Copyright (C) 2006 Markus Rechberger <[email protected]>
//
// Copyright (C) 2007-2016 Mauro Carvalho Chehab
//	- Port to work with the in-kernel driver
//	- Cleanups, fixes, alsa-controls, etc.
//
// This driver is based on my previous au600 usb pstn audio driver
// and inherits all the copyrights

#include "em28xx.h"

#include <linux/kernel.h>
#include <linux/usb.h>
#include <linux/init.h>
#include <linux/sound.h>
#include <linux/spinlock.h>
#include <linux/soundcard.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/info.h>
#include <sound/initval.h>
#include <sound/control.h>
#include <sound/tlv.h>
#include <sound/ac97_codec.h>
#include <media/v4l2-common.h>

static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC();

#define EM28XX_MAX_AUDIO_BUFS
#define EM28XX_MIN_AUDIO_PACKETS

#define dprintk(fmt, arg...)

static int index[SNDRV_CARDS] =;

static int em28xx_deinit_isoc_audio(struct em28xx *dev)
{}

static void em28xx_audio_isocirq(struct urb *urb)
{}

static int em28xx_init_audio_isoc(struct em28xx *dev)
{}

static const struct snd_pcm_hardware snd_em28xx_hw_capture =;

static int snd_em28xx_capture_open(struct snd_pcm_substream *substream)
{}

static int snd_em28xx_pcm_close(struct snd_pcm_substream *substream)
{}

static int snd_em28xx_prepare(struct snd_pcm_substream *substream)
{}

static void audio_trigger(struct work_struct *work)
{}

static int snd_em28xx_capture_trigger(struct snd_pcm_substream *substream,
				      int cmd)
{}

static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream
						    *substream)
{}

/*
 * AC97 volume control support
 */
static int em28xx_vol_info(struct snd_kcontrol *kcontrol,
			   struct snd_ctl_elem_info *info)
{}

static int em28xx_vol_put(struct snd_kcontrol *kcontrol,
			  struct snd_ctl_elem_value *value)
{}

static int em28xx_vol_get(struct snd_kcontrol *kcontrol,
			  struct snd_ctl_elem_value *value)
{}

static int em28xx_vol_put_mute(struct snd_kcontrol *kcontrol,
			       struct snd_ctl_elem_value *value)
{}

static int em28xx_vol_get_mute(struct snd_kcontrol *kcontrol,
			       struct snd_ctl_elem_value *value)
{}

static const DECLARE_TLV_DB_SCALE(em28xx_db_scale, -3450, 150, 0);

static int em28xx_cvol_new(struct snd_card *card, struct em28xx *dev,
			   char *name, int id)
{}

/*
 * register/unregister code and data
 */
static const struct snd_pcm_ops snd_em28xx_pcm_capture =;

static void em28xx_audio_free_urb(struct em28xx *dev)
{}

/* high bandwidth multiplier, as encoded in highspeed endpoint descriptors */
static int em28xx_audio_ep_packet_size(struct usb_device *udev,
				       struct usb_endpoint_descriptor *e)
{}

static int em28xx_audio_urb_init(struct em28xx *dev)
{}

static int em28xx_audio_init(struct em28xx *dev)
{}

static int em28xx_audio_fini(struct em28xx *dev)
{}

static int em28xx_audio_suspend(struct em28xx *dev)
{}

static int em28xx_audio_resume(struct em28xx *dev)
{}

static struct em28xx_ops audio_ops =;

static int __init em28xx_alsa_register(void)
{}

static void __exit em28xx_alsa_unregister(void)
{}

MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_VERSION();

module_init();
module_exit(em28xx_alsa_unregister);