root/include/linux/usb/audio-v3.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */
  20 struct 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 */
  28 struct 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 */
  37 struct 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 */
  44 struct 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 */
  50 struct 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 */
  59 struct 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 */
  72 struct 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 */
  88 struct 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 */
 104 struct 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[0]; /* 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)                \
 120 struct 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 */
 131 struct 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 */
 149 struct 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 */
 160 struct 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 */
 171 struct 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)                 \
 185 struct 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 */
 198 struct 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 */
 215 struct 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 */
 225 struct uac3_insertion_ctl_blk {
 226         __u8 bSize;
 227         __u8 bmConInserted;
 228 } __attribute__ ((packed));
 229 
 230 /* 6.1 INTERRUPT DATA MESSAGE */
 231 struct 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 */

/* [<][>][^][v][top][bottom][index][help] */