#include <linux/init.h>
#include <linux/usb.h>
#include <linux/usb/audio.h>
#include <linux/usb/audio-v2.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include "usbaudio.h"
#include "card.h"
#include "helper.h"
#include "pcm.h"
#include "implicit.h"
enum { … };
struct snd_usb_implicit_fb_match { … };
#define IMPLICIT_FB_GENERIC_DEV(vend, prod) …
#define IMPLICIT_FB_FIXED_DEV(vend, prod, ep, ifnum) …
#define IMPLICIT_FB_BOTH_DEV(vend, prod, ep, ifnum) …
#define IMPLICIT_FB_SKIP_DEV(vend, prod) …
static const struct snd_usb_implicit_fb_match playback_implicit_fb_quirks[] = …;
static const struct snd_usb_implicit_fb_match capture_implicit_fb_quirks[] = …;
static int add_implicit_fb_sync_ep(struct snd_usb_audio *chip,
struct audioformat *fmt,
int ep, int ep_idx, int ifnum,
const struct usb_host_interface *alts)
{ … }
static int add_generic_uac2_implicit_fb(struct snd_usb_audio *chip,
struct audioformat *fmt,
unsigned int ifnum,
unsigned int altsetting)
{ … }
static bool roland_sanity_check_iface(struct usb_host_interface *alts)
{ … }
static int add_roland_implicit_fb(struct snd_usb_audio *chip,
struct audioformat *fmt,
struct usb_host_interface *alts)
{ … }
static int add_roland_capture_quirk(struct snd_usb_audio *chip,
struct audioformat *fmt,
struct usb_host_interface *alts)
{ … }
static bool is_pioneer_implicit_fb(struct snd_usb_audio *chip,
struct usb_host_interface *alts)
{ … }
static int __add_generic_implicit_fb(struct snd_usb_audio *chip,
struct audioformat *fmt,
int iface, int altset)
{ … }
static int add_generic_implicit_fb(struct snd_usb_audio *chip,
struct audioformat *fmt,
struct usb_host_interface *alts)
{ … }
static const struct snd_usb_implicit_fb_match *
find_implicit_fb_entry(struct snd_usb_audio *chip,
const struct snd_usb_implicit_fb_match *match,
const struct usb_host_interface *alts)
{ … }
static int audioformat_implicit_fb_quirk(struct snd_usb_audio *chip,
struct audioformat *fmt,
struct usb_host_interface *alts)
{ … }
static int audioformat_capture_quirk(struct snd_usb_audio *chip,
struct audioformat *fmt,
struct usb_host_interface *alts)
{ … }
int snd_usb_parse_implicit_fb_quirk(struct snd_usb_audio *chip,
struct audioformat *fmt,
struct usb_host_interface *alts)
{ … }
static int match_endpoint_audioformats(struct snd_usb_substream *subs,
const struct audioformat *fp,
int rate, int channels,
snd_pcm_format_t pcm_format)
{ … }
static struct snd_usb_substream *
find_matching_substream(struct snd_usb_audio *chip, int stream, int ep_num,
int fmt_type)
{ … }
const struct audioformat *
snd_usb_find_implicit_fb_sync_format(struct snd_usb_audio *chip,
const struct audioformat *target,
const struct snd_pcm_hw_params *params,
int stream,
bool *fixed_rate)
{ … }