linux/sound/usb/usbaudio.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __USBAUDIO_H
#define __USBAUDIO_H
/*
 *   (Tentative) USB Audio Driver for ALSA
 *
 *   Copyright (c) 2002 by Takashi Iwai <[email protected]>
 */

/* handling of USB vendor/product ID pairs as 32-bit numbers */
#define USB_ID(vendor, product)
#define USB_ID_VENDOR(id)
#define USB_ID_PRODUCT(id)

/*
 *
 */

struct media_device;
struct media_intf_devnode;

#define MAX_CARD_INTERFACES

struct snd_usb_audio {};

#define USB_AUDIO_IFACE_UNUSED

#define usb_audio_err(chip, fmt, args...)
#define usb_audio_err_ratelimited(chip, fmt, args...)
#define usb_audio_warn(chip, fmt, args...)
#define usb_audio_info(chip, fmt, args...)
#define usb_audio_dbg(chip, fmt, args...)

/*
 * Information about devices with broken descriptors
 */

/* special values for .ifnum */
#define QUIRK_NODEV_INTERFACE
#define QUIRK_NO_INTERFACE
#define QUIRK_ANY_INTERFACE

enum quirk_type {};

struct snd_usb_audio_quirk {};

#define combine_word(s)
#define combine_triple(s)
#define combine_quad(s)

int snd_usb_lock_shutdown(struct snd_usb_audio *chip);
void snd_usb_unlock_shutdown(struct snd_usb_audio *chip);

extern bool snd_usb_use_vmalloc;
extern bool snd_usb_skip_validation;

/*
 * Driver behavior quirk flags, stored in chip->quirk_flags
 *
 * QUIRK_FLAG_GET_SAMPLE_RATE:
 *  Skip reading sample rate for devices, as some devices behave inconsistently
 *  or return error
 * QUIRK_FLAG_SHARE_MEDIA_DEVICE:
 *  Create Media Controller API entries
 * QUIRK_FLAG_ALIGN_TRANSFER:
 *  Allow alignment on audio sub-slot (channel samples) rather than on audio
 *  slots (audio frames)
 * QUIRK_TX_LENGTH:
 *  Add length specifier to transfers
 * QUIRK_FLAG_PLAYBACK_FIRST:
 *  Start playback stream at first even in implement feedback mode
 * QUIRK_FLAG_SKIP_CLOCK_SELECTOR:
 *  Skip clock selector setup; the device may reset to invalid state
 * QUIRK_FLAG_IGNORE_CLOCK_SOURCE:
 *  Ignore errors from clock source search; i.e. hardcoded clock
 * QUIRK_FLAG_ITF_USB_DSD_DAC:
 *  Indicates the device is for ITF-USB DSD based DACs that need a vendor cmd
 *  to switch between PCM and native DSD mode
 * QUIRK_FLAG_CTL_MSG_DELAY:
 *  Add a delay of 20ms at each control message handling
 * QUIRK_FLAG_CTL_MSG_DELAY_1M:
 *  Add a delay of 1-2ms at each control message handling
 * QUIRK_FLAG_CTL_MSG_DELAY_5M:
 *  Add a delay of 5-6ms at each control message handling
 * QUIRK_FLAG_IFACE_DELAY:
 *  Add a delay of 50ms at each interface setup
 * QUIRK_FLAG_VALIDATE_RATES:
 *  Perform sample rate validations at probe
 * QUIRK_FLAG_DISABLE_AUTOSUSPEND:
 *  Disable runtime PM autosuspend
 * QUIRK_FLAG_IGNORE_CTL_ERROR:
 *  Ignore errors for mixer access
 * QUIRK_FLAG_DSD_RAW:
 *  Support generic DSD raw U32_BE format
 * QUIRK_FLAG_SET_IFACE_FIRST:
 *  Set up the interface at first like UAC1
 * QUIRK_FLAG_GENERIC_IMPLICIT_FB
 *  Apply the generic implicit feedback sync mode (same as implicit_fb=1 option)
 * QUIRK_FLAG_SKIP_IMPLICIT_FB
 *  Don't apply implicit feedback sync mode
 * QUIRK_FLAG_IFACE_SKIP_CLOSE
 *  Don't closed interface during setting sample rate
 * QUIRK_FLAG_FORCE_IFACE_RESET
 *  Force an interface reset whenever stopping & restarting a stream
 *  (e.g. after xrun)
 * QUIRK_FLAG_FIXED_RATE
 *  Do not set PCM rate (frequency) when only one rate is available
 *  for the given endpoint.
 */

#define QUIRK_FLAG_GET_SAMPLE_RATE
#define QUIRK_FLAG_SHARE_MEDIA_DEVICE
#define QUIRK_FLAG_ALIGN_TRANSFER
#define QUIRK_FLAG_TX_LENGTH
#define QUIRK_FLAG_PLAYBACK_FIRST
#define QUIRK_FLAG_SKIP_CLOCK_SELECTOR
#define QUIRK_FLAG_IGNORE_CLOCK_SOURCE
#define QUIRK_FLAG_ITF_USB_DSD_DAC
#define QUIRK_FLAG_CTL_MSG_DELAY
#define QUIRK_FLAG_CTL_MSG_DELAY_1M
#define QUIRK_FLAG_CTL_MSG_DELAY_5M
#define QUIRK_FLAG_IFACE_DELAY
#define QUIRK_FLAG_VALIDATE_RATES
#define QUIRK_FLAG_DISABLE_AUTOSUSPEND
#define QUIRK_FLAG_IGNORE_CTL_ERROR
#define QUIRK_FLAG_DSD_RAW
#define QUIRK_FLAG_SET_IFACE_FIRST
#define QUIRK_FLAG_GENERIC_IMPLICIT_FB
#define QUIRK_FLAG_SKIP_IMPLICIT_FB
#define QUIRK_FLAG_IFACE_SKIP_CLOSE
#define QUIRK_FLAG_FORCE_IFACE_RESET
#define QUIRK_FLAG_FIXED_RATE

#endif /* __USBAUDIO_H */