cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

audio-v3.h (14270B)


      1// SPDX-License-Identifier: GPL-2.0+
      2/*
      3 * Copyright (c) 2017 Ruslan Bilovol <ruslan.bilovol@gmail.com>
      4 *
      5 * This file holds USB constants and structures defined
      6 * by the USB DEVICE CLASS DEFINITION FOR AUDIO DEVICES Release 3.0.
      7 */
      8
      9#ifndef __LINUX_USB_AUDIO_V3_H
     10#define __LINUX_USB_AUDIO_V3_H
     11
     12#include <linux/types.h>
     13
     14/*
     15 * v1.0, v2.0 and v3.0 of this standard have many things in common. For the rest
     16 * of the definitions, please refer to audio.h and audio-v2.h
     17 */
     18
     19/* All High Capability descriptors have these 2 fields at the beginning */
     20struct uac3_hc_descriptor_header {
     21	__le16 wLength;
     22	__u8 bDescriptorType;
     23	__u8 bDescriptorSubtype;
     24	__le16 wDescriptorID;
     25} __attribute__ ((packed));
     26
     27/* 4.3.1 CLUSTER DESCRIPTOR HEADER */
     28struct uac3_cluster_header_descriptor {
     29	__le16 wLength;
     30	__u8 bDescriptorType;
     31	__u8 bDescriptorSubtype;
     32	__le16 wDescriptorID;
     33	__u8 bNrChannels;
     34} __attribute__ ((packed));
     35
     36/* 4.3.2.1 SEGMENTS */
     37struct uac3_cluster_segment_descriptor {
     38	__le16 wLength;
     39	__u8 bSegmentType;
     40	/* __u8[0]; segment-specific data */
     41} __attribute__ ((packed));
     42
     43/* 4.3.2.1.1 END SEGMENT */
     44struct uac3_cluster_end_segment_descriptor {
     45	__le16 wLength;
     46	__u8 bSegmentType;		/* Constant END_SEGMENT */
     47} __attribute__ ((packed));
     48
     49/* 4.3.2.1.3.1 INFORMATION SEGMENT */
     50struct uac3_cluster_information_segment_descriptor {
     51	__le16 wLength;
     52	__u8 bSegmentType;
     53	__u8 bChPurpose;
     54	__u8 bChRelationship;
     55	__u8 bChGroupID;
     56} __attribute__ ((packed));
     57
     58/* 4.5.2 CLASS-SPECIFIC AC INTERFACE DESCRIPTOR */
     59struct uac3_ac_header_descriptor {
     60	__u8 bLength;			/* 10 */
     61	__u8 bDescriptorType;		/* CS_INTERFACE descriptor type */
     62	__u8 bDescriptorSubtype;	/* HEADER descriptor subtype */
     63	__u8 bCategory;
     64
     65	/* includes Clock Source, Unit, Terminal, and Power Domain desc. */
     66	__le16 wTotalLength;
     67
     68	__le32 bmControls;
     69} __attribute__ ((packed));
     70
     71/* 4.5.2.1 INPUT TERMINAL DESCRIPTOR */
     72struct uac3_input_terminal_descriptor {
     73	__u8 bLength;
     74	__u8 bDescriptorType;
     75	__u8 bDescriptorSubtype;
     76	__u8 bTerminalID;
     77	__le16 wTerminalType;
     78	__u8 bAssocTerminal;
     79	__u8 bCSourceID;
     80	__le32 bmControls;
     81	__le16 wClusterDescrID;
     82	__le16 wExTerminalDescrID;
     83	__le16 wConnectorsDescrID;
     84	__le16 wTerminalDescrStr;
     85} __attribute__((packed));
     86
     87/* 4.5.2.2 OUTPUT TERMINAL DESCRIPTOR */
     88struct uac3_output_terminal_descriptor {
     89	__u8 bLength;
     90	__u8 bDescriptorType;
     91	__u8 bDescriptorSubtype;
     92	__u8 bTerminalID;
     93	__le16 wTerminalType;
     94	__u8 bAssocTerminal;
     95	__u8 bSourceID;
     96	__u8 bCSourceID;
     97	__le32 bmControls;
     98	__le16 wExTerminalDescrID;
     99	__le16 wConnectorsDescrID;
    100	__le16 wTerminalDescrStr;
    101} __attribute__((packed));
    102
    103/* 4.5.2.7 FEATURE UNIT DESCRIPTOR */
    104struct uac3_feature_unit_descriptor {
    105	__u8 bLength;
    106	__u8 bDescriptorType;
    107	__u8 bDescriptorSubtype;
    108	__u8 bUnitID;
    109	__u8 bSourceID;
    110	/* bmaControls is actually u32,
    111	 * but u8 is needed for the hybrid parser */
    112	__u8 bmaControls[]; /* variable length */
    113	/* wFeatureDescrStr omitted */
    114} __attribute__((packed));
    115
    116#define UAC3_DT_FEATURE_UNIT_SIZE(ch)		(7 + ((ch) + 1) * 4)
    117
    118/* As above, but more useful for defining your own descriptors */
    119#define DECLARE_UAC3_FEATURE_UNIT_DESCRIPTOR(ch)		\
    120struct uac3_feature_unit_descriptor_##ch {			\
    121	__u8 bLength;						\
    122	__u8 bDescriptorType;					\
    123	__u8 bDescriptorSubtype;				\
    124	__u8 bUnitID;						\
    125	__u8 bSourceID;						\
    126	__le32 bmaControls[ch + 1];				\
    127	__le16 wFeatureDescrStr;				\
    128} __attribute__ ((packed))
    129
    130/* 4.5.2.12 CLOCK SOURCE DESCRIPTOR */
    131struct uac3_clock_source_descriptor {
    132	__u8 bLength;
    133	__u8 bDescriptorType;
    134	__u8 bDescriptorSubtype;
    135	__u8 bClockID;
    136	__u8 bmAttributes;
    137	__le32 bmControls;
    138	__u8 bReferenceTerminal;
    139	__le16 wClockSourceStr;
    140} __attribute__((packed));
    141
    142/* bmAttribute fields */
    143#define UAC3_CLOCK_SOURCE_TYPE_EXT	0x0
    144#define UAC3_CLOCK_SOURCE_TYPE_INT	0x1
    145#define UAC3_CLOCK_SOURCE_ASYNC		(0 << 2)
    146#define UAC3_CLOCK_SOURCE_SYNCED_TO_SOF	(1 << 1)
    147
    148/* 4.5.2.13 CLOCK SELECTOR DESCRIPTOR */
    149struct uac3_clock_selector_descriptor {
    150	__u8 bLength;
    151	__u8 bDescriptorType;
    152	__u8 bDescriptorSubtype;
    153	__u8 bClockID;
    154	__u8 bNrInPins;
    155	__u8 baCSourceID[];
    156	/* bmControls and wCSelectorDescrStr omitted */
    157} __attribute__((packed));
    158
    159/* 4.5.2.14 CLOCK MULTIPLIER DESCRIPTOR */
    160struct uac3_clock_multiplier_descriptor {
    161	__u8 bLength;
    162	__u8 bDescriptorType;
    163	__u8 bDescriptorSubtype;
    164	__u8 bClockID;
    165	__u8 bCSourceID;
    166	__le32 bmControls;
    167	__le16 wCMultiplierDescrStr;
    168} __attribute__((packed));
    169
    170/* 4.5.2.15 POWER DOMAIN DESCRIPTOR */
    171struct uac3_power_domain_descriptor {
    172	__u8 bLength;
    173	__u8 bDescriptorType;
    174	__u8 bDescriptorSubtype;
    175	__u8 bPowerDomainID;
    176	__le16 waRecoveryTime1;
    177	__le16 waRecoveryTime2;
    178	__u8 bNrEntities;
    179	__u8 baEntityID[];
    180	/* wPDomainDescrStr omitted */
    181} __attribute__((packed));
    182
    183/* As above, but more useful for defining your own descriptors */
    184#define DECLARE_UAC3_POWER_DOMAIN_DESCRIPTOR(n)			\
    185struct uac3_power_domain_descriptor_##n {			\
    186	__u8 bLength;						\
    187	__u8 bDescriptorType;					\
    188	__u8 bDescriptorSubtype;				\
    189	__u8 bPowerDomainID;					\
    190	__le16 waRecoveryTime1;					\
    191	__le16 waRecoveryTime2;					\
    192	__u8 bNrEntities;					\
    193	__u8 baEntityID[n];					\
    194	__le16 wPDomainDescrStr;					\
    195} __attribute__ ((packed))
    196
    197/* 4.7.2 CLASS-SPECIFIC AS INTERFACE DESCRIPTOR */
    198struct uac3_as_header_descriptor {
    199	__u8 bLength;
    200	__u8 bDescriptorType;
    201	__u8 bDescriptorSubtype;
    202	__u8 bTerminalLink;
    203	__le32 bmControls;
    204	__le16 wClusterDescrID;
    205	__le64 bmFormats;
    206	__u8 bSubslotSize;
    207	__u8 bBitResolution;
    208	__le16 bmAuxProtocols;
    209	__u8 bControlSize;
    210} __attribute__((packed));
    211
    212#define UAC3_FORMAT_TYPE_I_RAW_DATA	(1 << 6)
    213
    214/* 4.8.1.2 CLASS-SPECIFIC AS ISOCHRONOUS AUDIO DATA ENDPOINT DESCRIPTOR */
    215struct uac3_iso_endpoint_descriptor {
    216	__u8 bLength;
    217	__u8 bDescriptorType;
    218	__u8 bDescriptorSubtype;
    219	__le32 bmControls;
    220	__u8 bLockDelayUnits;
    221	__le16 wLockDelay;
    222} __attribute__((packed));
    223
    224/* 5.2.1.6.1 INSERTION CONTROL PARAMETER BLOCK */
    225struct uac3_insertion_ctl_blk {
    226	__u8 bSize;
    227	__u8 bmConInserted;
    228} __attribute__ ((packed));
    229
    230/* 6.1 INTERRUPT DATA MESSAGE */
    231struct uac3_interrupt_data_msg {
    232	__u8 bInfo;
    233	__u8 bSourceType;
    234	__le16 wValue;
    235	__le16 wIndex;
    236} __attribute__((packed));
    237
    238/* A.2 AUDIO AUDIO FUNCTION SUBCLASS CODES */
    239#define UAC3_FUNCTION_SUBCLASS_UNDEFINED	0x00
    240#define UAC3_FUNCTION_SUBCLASS_FULL_ADC_3_0	0x01
    241/* BADD profiles */
    242#define UAC3_FUNCTION_SUBCLASS_GENERIC_IO	0x20
    243#define UAC3_FUNCTION_SUBCLASS_HEADPHONE	0x21
    244#define UAC3_FUNCTION_SUBCLASS_SPEAKER		0x22
    245#define UAC3_FUNCTION_SUBCLASS_MICROPHONE	0x23
    246#define UAC3_FUNCTION_SUBCLASS_HEADSET		0x24
    247#define UAC3_FUNCTION_SUBCLASS_HEADSET_ADAPTER	0x25
    248#define UAC3_FUNCTION_SUBCLASS_SPEAKERPHONE	0x26
    249
    250/* A.7 AUDIO FUNCTION CATEGORY CODES */
    251#define UAC3_FUNCTION_SUBCLASS_UNDEFINED	0x00
    252#define UAC3_FUNCTION_DESKTOP_SPEAKER		0x01
    253#define UAC3_FUNCTION_HOME_THEATER		0x02
    254#define UAC3_FUNCTION_MICROPHONE		0x03
    255#define UAC3_FUNCTION_HEADSET			0x04
    256#define UAC3_FUNCTION_TELEPHONE			0x05
    257#define UAC3_FUNCTION_CONVERTER			0x06
    258#define UAC3_FUNCTION_SOUND_RECORDER		0x07
    259#define UAC3_FUNCTION_IO_BOX			0x08
    260#define UAC3_FUNCTION_MUSICAL_INSTRUMENT	0x09
    261#define UAC3_FUNCTION_PRO_AUDIO			0x0a
    262#define UAC3_FUNCTION_AUDIO_VIDEO		0x0b
    263#define UAC3_FUNCTION_CONTROL_PANEL		0x0c
    264#define UAC3_FUNCTION_HEADPHONE			0x0d
    265#define UAC3_FUNCTION_GENERIC_SPEAKER		0x0e
    266#define UAC3_FUNCTION_HEADSET_ADAPTER		0x0f
    267#define UAC3_FUNCTION_SPEAKERPHONE		0x10
    268#define UAC3_FUNCTION_OTHER			0xff
    269
    270/* A.8 AUDIO CLASS-SPECIFIC DESCRIPTOR TYPES */
    271#define UAC3_CS_UNDEFINED		0x20
    272#define UAC3_CS_DEVICE			0x21
    273#define UAC3_CS_CONFIGURATION		0x22
    274#define UAC3_CS_STRING			0x23
    275#define UAC3_CS_INTERFACE		0x24
    276#define UAC3_CS_ENDPOINT		0x25
    277#define UAC3_CS_CLUSTER			0x26
    278
    279/* A.10 CLUSTER DESCRIPTOR SEGMENT TYPES */
    280#define UAC3_SEGMENT_UNDEFINED		0x00
    281#define UAC3_CLUSTER_DESCRIPTION	0x01
    282#define UAC3_CLUSTER_VENDOR_DEFINED	0x1F
    283#define UAC3_CHANNEL_INFORMATION	0x20
    284#define UAC3_CHANNEL_AMBISONIC		0x21
    285#define UAC3_CHANNEL_DESCRIPTION	0x22
    286#define UAC3_CHANNEL_VENDOR_DEFINED	0xFE
    287#define UAC3_END_SEGMENT		0xFF
    288
    289/* A.11 CHANNEL PURPOSE DEFINITIONS */
    290#define UAC3_PURPOSE_UNDEFINED		0x00
    291#define UAC3_PURPOSE_GENERIC_AUDIO	0x01
    292#define UAC3_PURPOSE_VOICE		0x02
    293#define UAC3_PURPOSE_SPEECH		0x03
    294#define UAC3_PURPOSE_AMBIENT		0x04
    295#define UAC3_PURPOSE_REFERENCE		0x05
    296#define UAC3_PURPOSE_ULTRASONIC		0x06
    297#define UAC3_PURPOSE_VIBROKINETIC	0x07
    298#define UAC3_PURPOSE_NON_AUDIO		0xFF
    299
    300/* A.12 CHANNEL RELATIONSHIP DEFINITIONS */
    301#define UAC3_CH_RELATIONSHIP_UNDEFINED	0x00
    302#define UAC3_CH_MONO			0x01
    303#define UAC3_CH_LEFT			0x02
    304#define UAC3_CH_RIGHT			0x03
    305#define UAC3_CH_ARRAY			0x04
    306#define UAC3_CH_PATTERN_X		0x20
    307#define UAC3_CH_PATTERN_Y		0x21
    308#define UAC3_CH_PATTERN_A		0x22
    309#define UAC3_CH_PATTERN_B		0x23
    310#define UAC3_CH_PATTERN_M		0x24
    311#define UAC3_CH_PATTERN_S		0x25
    312#define UAC3_CH_FRONT_LEFT		0x80
    313#define UAC3_CH_FRONT_RIGHT		0x81
    314#define UAC3_CH_FRONT_CENTER		0x82
    315#define UAC3_CH_FRONT_LEFT_OF_CENTER	0x83
    316#define UAC3_CH_FRONT_RIGHT_OF_CENTER	0x84
    317#define UAC3_CH_FRONT_WIDE_LEFT		0x85
    318#define UAC3_CH_FRONT_WIDE_RIGHT	0x86
    319#define UAC3_CH_SIDE_LEFT		0x87
    320#define UAC3_CH_SIDE_RIGHT		0x88
    321#define UAC3_CH_SURROUND_ARRAY_LEFT	0x89
    322#define UAC3_CH_SURROUND_ARRAY_RIGHT	0x8A
    323#define UAC3_CH_BACK_LEFT		0x8B
    324#define UAC3_CH_BACK_RIGHT		0x8C
    325#define UAC3_CH_BACK_CENTER		0x8D
    326#define UAC3_CH_BACK_LEFT_OF_CENTER	0x8E
    327#define UAC3_CH_BACK_RIGHT_OF_CENTER	0x8F
    328#define UAC3_CH_BACK_WIDE_LEFT		0x90
    329#define UAC3_CH_BACK_WIDE_RIGHT		0x91
    330#define UAC3_CH_TOP_CENTER		0x92
    331#define UAC3_CH_TOP_FRONT_LEFT		0x93
    332#define UAC3_CH_TOP_FRONT_RIGHT		0x94
    333#define UAC3_CH_TOP_FRONT_CENTER	0x95
    334#define UAC3_CH_TOP_FRONT_LOC		0x96
    335#define UAC3_CH_TOP_FRONT_ROC		0x97
    336#define UAC3_CH_TOP_FRONT_WIDE_LEFT	0x98
    337#define UAC3_CH_TOP_FRONT_WIDE_RIGHT	0x99
    338#define UAC3_CH_TOP_SIDE_LEFT		0x9A
    339#define UAC3_CH_TOP_SIDE_RIGHT		0x9B
    340#define UAC3_CH_TOP_SURR_ARRAY_LEFT	0x9C
    341#define UAC3_CH_TOP_SURR_ARRAY_RIGHT	0x9D
    342#define UAC3_CH_TOP_BACK_LEFT		0x9E
    343#define UAC3_CH_TOP_BACK_RIGHT		0x9F
    344#define UAC3_CH_TOP_BACK_CENTER		0xA0
    345#define UAC3_CH_TOP_BACK_LOC		0xA1
    346#define UAC3_CH_TOP_BACK_ROC		0xA2
    347#define UAC3_CH_TOP_BACK_WIDE_LEFT	0xA3
    348#define UAC3_CH_TOP_BACK_WIDE_RIGHT	0xA4
    349#define UAC3_CH_BOTTOM_CENTER		0xA5
    350#define UAC3_CH_BOTTOM_FRONT_LEFT	0xA6
    351#define UAC3_CH_BOTTOM_FRONT_RIGHT	0xA7
    352#define UAC3_CH_BOTTOM_FRONT_CENTER	0xA8
    353#define UAC3_CH_BOTTOM_FRONT_LOC	0xA9
    354#define UAC3_CH_BOTTOM_FRONT_ROC	0xAA
    355#define UAC3_CH_BOTTOM_FRONT_WIDE_LEFT	0xAB
    356#define UAC3_CH_BOTTOM_FRONT_WIDE_RIGHT	0xAC
    357#define UAC3_CH_BOTTOM_SIDE_LEFT	0xAD
    358#define UAC3_CH_BOTTOM_SIDE_RIGHT	0xAE
    359#define UAC3_CH_BOTTOM_SURR_ARRAY_LEFT	0xAF
    360#define UAC3_CH_BOTTOM_SURR_ARRAY_RIGHT	0xB0
    361#define UAC3_CH_BOTTOM_BACK_LEFT	0xB1
    362#define UAC3_CH_BOTTOM_BACK_RIGHT	0xB2
    363#define UAC3_CH_BOTTOM_BACK_CENTER	0xB3
    364#define UAC3_CH_BOTTOM_BACK_LOC		0xB4
    365#define UAC3_CH_BOTTOM_BACK_ROC		0xB5
    366#define UAC3_CH_BOTTOM_BACK_WIDE_LEFT	0xB6
    367#define UAC3_CH_BOTTOM_BACK_WIDE_RIGHT	0xB7
    368#define UAC3_CH_LOW_FREQUENCY_EFFECTS	0xB8
    369#define UAC3_CH_LFE_LEFT		0xB9
    370#define UAC3_CH_LFE_RIGHT		0xBA
    371#define UAC3_CH_HEADPHONE_LEFT		0xBB
    372#define UAC3_CH_HEADPHONE_RIGHT		0xBC
    373
    374/* A.15 AUDIO CLASS-SPECIFIC AC INTERFACE DESCRIPTOR SUBTYPES */
    375/* see audio.h for the rest, which is identical to v1 */
    376#define UAC3_EXTENDED_TERMINAL		0x04
    377#define UAC3_MIXER_UNIT			0x05
    378#define UAC3_SELECTOR_UNIT		0x06
    379#define UAC3_FEATURE_UNIT		0x07
    380#define UAC3_EFFECT_UNIT		0x08
    381#define UAC3_PROCESSING_UNIT		0x09
    382#define UAC3_EXTENSION_UNIT		0x0a
    383#define UAC3_CLOCK_SOURCE		0x0b
    384#define UAC3_CLOCK_SELECTOR		0x0c
    385#define UAC3_CLOCK_MULTIPLIER		0x0d
    386#define UAC3_SAMPLE_RATE_CONVERTER	0x0e
    387#define UAC3_CONNECTORS			0x0f
    388#define UAC3_POWER_DOMAIN		0x10
    389
    390/* A.20 PROCESSING UNIT PROCESS TYPES */
    391#define UAC3_PROCESS_UNDEFINED		0x00
    392#define UAC3_PROCESS_UP_DOWNMIX		0x01
    393#define UAC3_PROCESS_STEREO_EXTENDER	0x02
    394#define UAC3_PROCESS_MULTI_FUNCTION	0x03
    395
    396/* A.22 AUDIO CLASS-SPECIFIC REQUEST CODES */
    397/* see audio-v2.h for the rest, which is identical to v2 */
    398#define UAC3_CS_REQ_INTEN			0x04
    399#define UAC3_CS_REQ_STRING			0x05
    400#define UAC3_CS_REQ_HIGH_CAPABILITY_DESCRIPTOR	0x06
    401
    402/* A.23.1 AUDIOCONTROL INTERFACE CONTROL SELECTORS */
    403#define UAC3_AC_CONTROL_UNDEFINED		0x00
    404#define UAC3_AC_ACTIVE_INTERFACE_CONTROL	0x01
    405#define UAC3_AC_POWER_DOMAIN_CONTROL		0x02
    406
    407/* A.23.5 TERMINAL CONTROL SELECTORS */
    408#define UAC3_TE_UNDEFINED			0x00
    409#define UAC3_TE_INSERTION			0x01
    410#define UAC3_TE_OVERLOAD			0x02
    411#define UAC3_TE_UNDERFLOW			0x03
    412#define UAC3_TE_OVERFLOW			0x04
    413#define UAC3_TE_LATENCY 			0x05
    414
    415/* A.23.10 PROCESSING UNITS CONTROL SELECTROS */
    416
    417/* Up/Down Mixer */
    418#define UAC3_UD_MODE_SELECT			0x01
    419
    420/* Stereo Extender */
    421#define UAC3_EXT_WIDTH_CONTROL			0x01
    422
    423
    424/* BADD predefined Unit/Terminal values */
    425#define UAC3_BADD_IT_ID1	1  /* Input Terminal ID1: bTerminalID = 1 */
    426#define UAC3_BADD_FU_ID2	2  /* Feature Unit ID2: bUnitID = 2 */
    427#define UAC3_BADD_OT_ID3	3  /* Output Terminal ID3: bTerminalID = 3 */
    428#define UAC3_BADD_IT_ID4	4  /* Input Terminal ID4: bTerminalID = 4 */
    429#define UAC3_BADD_FU_ID5	5  /* Feature Unit ID5: bUnitID = 5 */
    430#define UAC3_BADD_OT_ID6	6  /* Output Terminal ID6: bTerminalID = 6 */
    431#define UAC3_BADD_FU_ID7	7  /* Feature Unit ID7: bUnitID = 7 */
    432#define UAC3_BADD_MU_ID8	8  /* Mixer Unit ID8: bUnitID = 8 */
    433#define UAC3_BADD_CS_ID9	9  /* Clock Source Entity ID9: bClockID = 9 */
    434#define UAC3_BADD_PD_ID10	10 /* Power Domain ID10: bPowerDomainID = 10 */
    435#define UAC3_BADD_PD_ID11	11 /* Power Domain ID11: bPowerDomainID = 11 */
    436
    437/* BADD wMaxPacketSize of AS endpoints */
    438#define UAC3_BADD_EP_MAXPSIZE_SYNC_MONO_16		0x0060
    439#define UAC3_BADD_EP_MAXPSIZE_ASYNC_MONO_16		0x0062
    440#define UAC3_BADD_EP_MAXPSIZE_SYNC_MONO_24		0x0090
    441#define UAC3_BADD_EP_MAXPSIZE_ASYNC_MONO_24		0x0093
    442#define UAC3_BADD_EP_MAXPSIZE_SYNC_STEREO_16		0x00C0
    443#define UAC3_BADD_EP_MAXPSIZE_ASYNC_STEREO_16		0x00C4
    444#define UAC3_BADD_EP_MAXPSIZE_SYNC_STEREO_24		0x0120
    445#define UAC3_BADD_EP_MAXPSIZE_ASYNC_STEREO_24		0x0126
    446
    447/* BADD sample rate is always fixed to 48kHz */
    448#define UAC3_BADD_SAMPLING_RATE				48000
    449
    450/* BADD power domains recovery times in 50us increments */
    451#define UAC3_BADD_PD_RECOVER_D1D0			0x0258	/* 30ms */
    452#define UAC3_BADD_PD_RECOVER_D2D0			0x1770	/* 300ms */
    453
    454#endif /* __LINUX_USB_AUDIO_V3_H */