Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ALSA: usb-audio: Replace complex quirk lines with macros

Apply the newly introduced macros for reduce the complex expressions
and cast in the quirk table definitions. It results in a significant
code reduction, too.

There should be no functional changes.

Link: https://patch.msgid.link/20240814134844.2726-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>

+591 -1615
+591 -1615
sound/usb/quirks-table.h
··· 115 115 /* FTDI devices */ 116 116 { 117 117 USB_DEVICE(0x0403, 0xb8d8), 118 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 118 + QUIRK_DRIVER_INFO { 119 119 /* .vendor_name = "STARR LABS", */ 120 120 /* .product_name = "Starr Labs MIDI USB device", */ 121 121 .ifnum = 0, ··· 126 126 { 127 127 /* Creative BT-D1 */ 128 128 USB_DEVICE(0x041e, 0x0005), 129 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 130 - .ifnum = 1, 131 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 132 - .data = &(const struct audioformat) { 129 + QUIRK_DRIVER_INFO { 130 + QUIRK_DATA_AUDIOFORMAT(1) { 133 131 .formats = SNDRV_PCM_FMTBIT_S16_LE, 134 132 .channels = 2, 135 133 .iface = 1, ··· 162 164 */ 163 165 { 164 166 USB_AUDIO_DEVICE(0x041e, 0x4095), 165 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 166 - .ifnum = QUIRK_ANY_INTERFACE, 167 - .type = QUIRK_COMPOSITE, 168 - .data = &(const struct snd_usb_audio_quirk[]) { 167 + QUIRK_DRIVER_INFO { 168 + QUIRK_DATA_COMPOSITE { 169 + { QUIRK_DATA_STANDARD_MIXER(2) }, 169 170 { 170 - .ifnum = 2, 171 - .type = QUIRK_AUDIO_STANDARD_MIXER, 172 - }, 173 - { 174 - .ifnum = 3, 175 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 176 - .data = &(const struct audioformat) { 171 + QUIRK_DATA_AUDIOFORMAT(3) { 177 172 .formats = SNDRV_PCM_FMTBIT_S16_LE, 178 173 .channels = 2, 179 174 .fmt_bits = 16, ··· 182 191 .rate_table = (unsigned int[]) { 48000 }, 183 192 }, 184 193 }, 185 - { 186 - .ifnum = -1 187 - }, 194 + QUIRK_COMPOSITE_END 188 195 }, 189 196 }, 190 197 }, ··· 194 205 */ 195 206 { 196 207 USB_DEVICE(0x0424, 0xb832), 197 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 208 + QUIRK_DRIVER_INFO { 198 209 .vendor_name = "Standard Microsystems Corp.", 199 210 .product_name = "HP Wireless Audio", 200 - .ifnum = QUIRK_ANY_INTERFACE, 201 - .type = QUIRK_COMPOSITE, 202 - .data = (const struct snd_usb_audio_quirk[]) { 211 + QUIRK_DATA_COMPOSITE { 203 212 /* Mixer */ 204 - { 205 - .ifnum = 0, 206 - .type = QUIRK_IGNORE_INTERFACE, 207 - }, 213 + { QUIRK_DATA_IGNORE(0) }, 208 214 /* Playback */ 209 - { 210 - .ifnum = 1, 211 - .type = QUIRK_IGNORE_INTERFACE, 212 - }, 215 + { QUIRK_DATA_IGNORE(1) }, 213 216 /* Capture */ 214 - { 215 - .ifnum = 2, 216 - .type = QUIRK_IGNORE_INTERFACE, 217 - }, 217 + { QUIRK_DATA_IGNORE(2) }, 218 218 /* HID Device, .ifnum = 3 */ 219 - { 220 - .ifnum = -1, 221 - } 219 + QUIRK_COMPOSITE_END 222 220 } 223 221 } 224 222 }, ··· 228 252 229 253 #define YAMAHA_DEVICE(id, name) { \ 230 254 USB_DEVICE(0x0499, id), \ 231 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { \ 255 + QUIRK_DRIVER_INFO { \ 232 256 .vendor_name = "Yamaha", \ 233 257 .product_name = name, \ 234 - .ifnum = QUIRK_ANY_INTERFACE, \ 235 - .type = QUIRK_MIDI_YAMAHA \ 258 + QUIRK_DATA_MIDI_YAMAHA(QUIRK_ANY_INTERFACE) \ 236 259 } \ 237 260 } 238 261 #define YAMAHA_INTERFACE(id, intf, name) { \ 239 262 USB_DEVICE_VENDOR_SPEC(0x0499, id), \ 240 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { \ 263 + QUIRK_DRIVER_INFO { \ 241 264 .vendor_name = "Yamaha", \ 242 265 .product_name = name, \ 243 - .ifnum = intf, \ 244 - .type = QUIRK_MIDI_YAMAHA \ 266 + QUIRK_DATA_MIDI_YAMAHA(intf) \ 245 267 } \ 246 268 } 247 269 YAMAHA_DEVICE(0x1000, "UX256"), ··· 326 352 YAMAHA_DEVICE(0x105d, NULL), 327 353 { 328 354 USB_DEVICE(0x0499, 0x1503), 329 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 355 + QUIRK_DRIVER_INFO { 330 356 /* .vendor_name = "Yamaha", */ 331 357 /* .product_name = "MOX6/MOX8", */ 332 - .ifnum = QUIRK_ANY_INTERFACE, 333 - .type = QUIRK_COMPOSITE, 334 - .data = (const struct snd_usb_audio_quirk[]) { 335 - { 336 - .ifnum = 1, 337 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 338 - }, 339 - { 340 - .ifnum = 2, 341 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 342 - }, 343 - { 344 - .ifnum = 3, 345 - .type = QUIRK_MIDI_YAMAHA 346 - }, 347 - { 348 - .ifnum = -1 349 - } 358 + QUIRK_DATA_COMPOSITE { 359 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 360 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 361 + { QUIRK_DATA_MIDI_YAMAHA(3) }, 362 + QUIRK_COMPOSITE_END 350 363 } 351 364 } 352 365 }, 353 366 { 354 367 USB_DEVICE(0x0499, 0x1507), 355 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 368 + QUIRK_DRIVER_INFO { 356 369 /* .vendor_name = "Yamaha", */ 357 370 /* .product_name = "THR10", */ 358 - .ifnum = QUIRK_ANY_INTERFACE, 359 - .type = QUIRK_COMPOSITE, 360 - .data = (const struct snd_usb_audio_quirk[]) { 361 - { 362 - .ifnum = 1, 363 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 364 - }, 365 - { 366 - .ifnum = 2, 367 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 368 - }, 369 - { 370 - .ifnum = 3, 371 - .type = QUIRK_MIDI_YAMAHA 372 - }, 373 - { 374 - .ifnum = -1 375 - } 371 + QUIRK_DATA_COMPOSITE { 372 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 373 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 374 + { QUIRK_DATA_MIDI_YAMAHA(3) }, 375 + QUIRK_COMPOSITE_END 376 376 } 377 377 } 378 378 }, 379 379 { 380 380 USB_DEVICE(0x0499, 0x1509), 381 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 381 + QUIRK_DRIVER_INFO { 382 382 /* .vendor_name = "Yamaha", */ 383 383 /* .product_name = "Steinberg UR22", */ 384 - .ifnum = QUIRK_ANY_INTERFACE, 385 - .type = QUIRK_COMPOSITE, 386 - .data = (const struct snd_usb_audio_quirk[]) { 387 - { 388 - .ifnum = 1, 389 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 390 - }, 391 - { 392 - .ifnum = 2, 393 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 394 - }, 395 - { 396 - .ifnum = 3, 397 - .type = QUIRK_MIDI_YAMAHA 398 - }, 399 - { 400 - .ifnum = 4, 401 - .type = QUIRK_IGNORE_INTERFACE 402 - }, 403 - { 404 - .ifnum = -1 405 - } 384 + QUIRK_DATA_COMPOSITE { 385 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 386 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 387 + { QUIRK_DATA_MIDI_YAMAHA(3) }, 388 + { QUIRK_DATA_IGNORE(4) }, 389 + QUIRK_COMPOSITE_END 406 390 } 407 391 } 408 392 }, 409 393 { 410 394 USB_DEVICE(0x0499, 0x150a), 411 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 395 + QUIRK_DRIVER_INFO { 412 396 /* .vendor_name = "Yamaha", */ 413 397 /* .product_name = "THR5A", */ 414 - .ifnum = QUIRK_ANY_INTERFACE, 415 - .type = QUIRK_COMPOSITE, 416 - .data = (const struct snd_usb_audio_quirk[]) { 417 - { 418 - .ifnum = 1, 419 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 420 - }, 421 - { 422 - .ifnum = 2, 423 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 424 - }, 425 - { 426 - .ifnum = 3, 427 - .type = QUIRK_MIDI_YAMAHA 428 - }, 429 - { 430 - .ifnum = -1 431 - } 398 + QUIRK_DATA_COMPOSITE { 399 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 400 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 401 + { QUIRK_DATA_MIDI_YAMAHA(3) }, 402 + QUIRK_COMPOSITE_END 432 403 } 433 404 } 434 405 }, 435 406 { 436 407 USB_DEVICE(0x0499, 0x150c), 437 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 408 + QUIRK_DRIVER_INFO { 438 409 /* .vendor_name = "Yamaha", */ 439 410 /* .product_name = "THR10C", */ 440 - .ifnum = QUIRK_ANY_INTERFACE, 441 - .type = QUIRK_COMPOSITE, 442 - .data = (const struct snd_usb_audio_quirk[]) { 443 - { 444 - .ifnum = 1, 445 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 446 - }, 447 - { 448 - .ifnum = 2, 449 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 450 - }, 451 - { 452 - .ifnum = 3, 453 - .type = QUIRK_MIDI_YAMAHA 454 - }, 455 - { 456 - .ifnum = -1 457 - } 411 + QUIRK_DATA_COMPOSITE { 412 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 413 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 414 + { QUIRK_DATA_MIDI_YAMAHA(3) }, 415 + QUIRK_COMPOSITE_END 458 416 } 459 417 } 460 418 }, ··· 420 514 USB_DEVICE_ID_MATCH_INT_CLASS, 421 515 .idVendor = 0x0499, 422 516 .bInterfaceClass = USB_CLASS_VENDOR_SPEC, 423 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 517 + QUIRK_DRIVER_INFO { 424 518 .ifnum = QUIRK_ANY_INTERFACE, 425 519 .type = QUIRK_AUTODETECT 426 520 } ··· 431 525 */ 432 526 { 433 527 USB_DEVICE(0x0582, 0x0000), 434 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 528 + QUIRK_DRIVER_INFO { 435 529 .vendor_name = "Roland", 436 530 .product_name = "UA-100", 437 - .ifnum = QUIRK_ANY_INTERFACE, 438 - .type = QUIRK_COMPOSITE, 439 - .data = (const struct snd_usb_audio_quirk[]) { 531 + QUIRK_DATA_COMPOSITE { 440 532 { 441 - .ifnum = 0, 442 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 443 - .data = & (const struct audioformat) { 533 + QUIRK_DATA_AUDIOFORMAT(0) { 444 534 .formats = SNDRV_PCM_FMTBIT_S16_LE, 445 535 .channels = 4, 446 536 .iface = 0, ··· 451 549 } 452 550 }, 453 551 { 454 - .ifnum = 1, 455 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 456 - .data = & (const struct audioformat) { 552 + QUIRK_DATA_AUDIOFORMAT(1) { 457 553 .formats = SNDRV_PCM_FMTBIT_S16_LE, 458 554 .channels = 2, 459 555 .iface = 1, ··· 466 566 } 467 567 }, 468 568 { 469 - .ifnum = 2, 470 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 471 - .data = & (const struct snd_usb_midi_endpoint_info) { 569 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 472 570 .out_cables = 0x0007, 473 571 .in_cables = 0x0007 474 572 } 475 573 }, 476 - { 477 - .ifnum = -1 478 - } 574 + QUIRK_COMPOSITE_END 479 575 } 480 576 } 481 577 }, 482 578 { 483 579 USB_DEVICE(0x0582, 0x0002), 484 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 580 + QUIRK_DRIVER_INFO { 485 581 .vendor_name = "EDIROL", 486 582 .product_name = "UM-4", 487 - .ifnum = QUIRK_ANY_INTERFACE, 488 - .type = QUIRK_COMPOSITE, 489 - .data = (const struct snd_usb_audio_quirk[]) { 583 + QUIRK_DATA_COMPOSITE { 584 + { QUIRK_DATA_IGNORE(0) }, 585 + { QUIRK_DATA_IGNORE(1) }, 490 586 { 491 - .ifnum = 0, 492 - .type = QUIRK_IGNORE_INTERFACE 493 - }, 494 - { 495 - .ifnum = 1, 496 - .type = QUIRK_IGNORE_INTERFACE 497 - }, 498 - { 499 - .ifnum = 2, 500 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 501 - .data = & (const struct snd_usb_midi_endpoint_info) { 587 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 502 588 .out_cables = 0x000f, 503 589 .in_cables = 0x000f 504 590 } 505 591 }, 506 - { 507 - .ifnum = -1 508 - } 592 + QUIRK_COMPOSITE_END 509 593 } 510 594 } 511 595 }, 512 596 { 513 597 USB_DEVICE(0x0582, 0x0003), 514 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 598 + QUIRK_DRIVER_INFO { 515 599 .vendor_name = "Roland", 516 600 .product_name = "SC-8850", 517 - .ifnum = QUIRK_ANY_INTERFACE, 518 - .type = QUIRK_COMPOSITE, 519 - .data = (const struct snd_usb_audio_quirk[]) { 601 + QUIRK_DATA_COMPOSITE { 602 + { QUIRK_DATA_IGNORE(0) }, 603 + { QUIRK_DATA_IGNORE(1) }, 520 604 { 521 - .ifnum = 0, 522 - .type = QUIRK_IGNORE_INTERFACE 523 - }, 524 - { 525 - .ifnum = 1, 526 - .type = QUIRK_IGNORE_INTERFACE 527 - }, 528 - { 529 - .ifnum = 2, 530 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 531 - .data = & (const struct snd_usb_midi_endpoint_info) { 605 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 532 606 .out_cables = 0x003f, 533 607 .in_cables = 0x003f 534 608 } 535 609 }, 536 - { 537 - .ifnum = -1 538 - } 610 + QUIRK_COMPOSITE_END 539 611 } 540 612 } 541 613 }, 542 614 { 543 615 USB_DEVICE(0x0582, 0x0004), 544 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 616 + QUIRK_DRIVER_INFO { 545 617 .vendor_name = "Roland", 546 618 .product_name = "U-8", 547 - .ifnum = QUIRK_ANY_INTERFACE, 548 - .type = QUIRK_COMPOSITE, 549 - .data = (const struct snd_usb_audio_quirk[]) { 619 + QUIRK_DATA_COMPOSITE { 620 + { QUIRK_DATA_IGNORE(0) }, 621 + { QUIRK_DATA_IGNORE(1) }, 550 622 { 551 - .ifnum = 0, 552 - .type = QUIRK_IGNORE_INTERFACE 553 - }, 554 - { 555 - .ifnum = 1, 556 - .type = QUIRK_IGNORE_INTERFACE 557 - }, 558 - { 559 - .ifnum = 2, 560 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 561 - .data = & (const struct snd_usb_midi_endpoint_info) { 623 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 562 624 .out_cables = 0x0005, 563 625 .in_cables = 0x0005 564 626 } 565 627 }, 566 - { 567 - .ifnum = -1 568 - } 628 + QUIRK_COMPOSITE_END 569 629 } 570 630 } 571 631 }, ··· 533 673 /* Has ID 0x0099 when not in "Advanced Driver" mode. 534 674 * The UM-2EX has only one input, but we cannot detect this. */ 535 675 USB_DEVICE(0x0582, 0x0005), 536 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 676 + QUIRK_DRIVER_INFO { 537 677 .vendor_name = "EDIROL", 538 678 .product_name = "UM-2", 539 - .ifnum = QUIRK_ANY_INTERFACE, 540 - .type = QUIRK_COMPOSITE, 541 - .data = (const struct snd_usb_audio_quirk[]) { 679 + QUIRK_DATA_COMPOSITE { 680 + { QUIRK_DATA_IGNORE(0) }, 681 + { QUIRK_DATA_IGNORE(1) }, 542 682 { 543 - .ifnum = 0, 544 - .type = QUIRK_IGNORE_INTERFACE 545 - }, 546 - { 547 - .ifnum = 1, 548 - .type = QUIRK_IGNORE_INTERFACE 549 - }, 550 - { 551 - .ifnum = 2, 552 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 553 - .data = & (const struct snd_usb_midi_endpoint_info) { 683 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 554 684 .out_cables = 0x0003, 555 685 .in_cables = 0x0003 556 686 } 557 687 }, 558 - { 559 - .ifnum = -1 560 - } 688 + QUIRK_COMPOSITE_END 561 689 } 562 690 } 563 691 }, 564 692 { 565 693 USB_DEVICE(0x0582, 0x0007), 566 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 694 + QUIRK_DRIVER_INFO { 567 695 .vendor_name = "Roland", 568 696 .product_name = "SC-8820", 569 - .ifnum = QUIRK_ANY_INTERFACE, 570 - .type = QUIRK_COMPOSITE, 571 - .data = (const struct snd_usb_audio_quirk[]) { 697 + QUIRK_DATA_COMPOSITE { 698 + { QUIRK_DATA_IGNORE(0) }, 699 + { QUIRK_DATA_IGNORE(1) }, 572 700 { 573 - .ifnum = 0, 574 - .type = QUIRK_IGNORE_INTERFACE 575 - }, 576 - { 577 - .ifnum = 1, 578 - .type = QUIRK_IGNORE_INTERFACE 579 - }, 580 - { 581 - .ifnum = 2, 582 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 583 - .data = & (const struct snd_usb_midi_endpoint_info) { 701 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 584 702 .out_cables = 0x0013, 585 703 .in_cables = 0x0013 586 704 } 587 705 }, 588 - { 589 - .ifnum = -1 590 - } 706 + QUIRK_COMPOSITE_END 591 707 } 592 708 } 593 709 }, 594 710 { 595 711 USB_DEVICE(0x0582, 0x0008), 596 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 712 + QUIRK_DRIVER_INFO { 597 713 .vendor_name = "Roland", 598 714 .product_name = "PC-300", 599 - .ifnum = QUIRK_ANY_INTERFACE, 600 - .type = QUIRK_COMPOSITE, 601 - .data = (const struct snd_usb_audio_quirk[]) { 715 + QUIRK_DATA_COMPOSITE { 716 + { QUIRK_DATA_IGNORE(0) }, 717 + { QUIRK_DATA_IGNORE(1) }, 602 718 { 603 - .ifnum = 0, 604 - .type = QUIRK_IGNORE_INTERFACE 605 - }, 606 - { 607 - .ifnum = 1, 608 - .type = QUIRK_IGNORE_INTERFACE 609 - }, 610 - { 611 - .ifnum = 2, 612 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 613 - .data = & (const struct snd_usb_midi_endpoint_info) { 719 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 614 720 .out_cables = 0x0001, 615 721 .in_cables = 0x0001 616 722 } 617 723 }, 618 - { 619 - .ifnum = -1 620 - } 724 + QUIRK_COMPOSITE_END 621 725 } 622 726 } 623 727 }, 624 728 { 625 729 /* has ID 0x009d when not in "Advanced Driver" mode */ 626 730 USB_DEVICE(0x0582, 0x0009), 627 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 731 + QUIRK_DRIVER_INFO { 628 732 .vendor_name = "EDIROL", 629 733 .product_name = "UM-1", 630 - .ifnum = QUIRK_ANY_INTERFACE, 631 - .type = QUIRK_COMPOSITE, 632 - .data = (const struct snd_usb_audio_quirk[]) { 734 + QUIRK_DATA_COMPOSITE { 735 + { QUIRK_DATA_IGNORE(0) }, 736 + { QUIRK_DATA_IGNORE(1) }, 633 737 { 634 - .ifnum = 0, 635 - .type = QUIRK_IGNORE_INTERFACE 636 - }, 637 - { 638 - .ifnum = 1, 639 - .type = QUIRK_IGNORE_INTERFACE 640 - }, 641 - { 642 - .ifnum = 2, 643 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 644 - .data = & (const struct snd_usb_midi_endpoint_info) { 738 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 645 739 .out_cables = 0x0001, 646 740 .in_cables = 0x0001 647 741 } 648 742 }, 649 - { 650 - .ifnum = -1 651 - } 743 + QUIRK_COMPOSITE_END 652 744 } 653 745 } 654 746 }, 655 747 { 656 748 USB_DEVICE(0x0582, 0x000b), 657 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 749 + QUIRK_DRIVER_INFO { 658 750 .vendor_name = "Roland", 659 751 .product_name = "SK-500", 660 - .ifnum = QUIRK_ANY_INTERFACE, 661 - .type = QUIRK_COMPOSITE, 662 - .data = (const struct snd_usb_audio_quirk[]) { 752 + QUIRK_DATA_COMPOSITE { 753 + { QUIRK_DATA_IGNORE(0) }, 754 + { QUIRK_DATA_IGNORE(1) }, 663 755 { 664 - .ifnum = 0, 665 - .type = QUIRK_IGNORE_INTERFACE 666 - }, 667 - { 668 - .ifnum = 1, 669 - .type = QUIRK_IGNORE_INTERFACE 670 - }, 671 - { 672 - .ifnum = 2, 673 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 674 - .data = & (const struct snd_usb_midi_endpoint_info) { 756 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 675 757 .out_cables = 0x0013, 676 758 .in_cables = 0x0013 677 759 } 678 760 }, 679 - { 680 - .ifnum = -1 681 - } 761 + QUIRK_COMPOSITE_END 682 762 } 683 763 } 684 764 }, ··· 626 826 /* thanks to Emiliano Grilli <emillo@libero.it> 627 827 * for helping researching this data */ 628 828 USB_DEVICE(0x0582, 0x000c), 629 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 829 + QUIRK_DRIVER_INFO { 630 830 .vendor_name = "Roland", 631 831 .product_name = "SC-D70", 632 - .ifnum = QUIRK_ANY_INTERFACE, 633 - .type = QUIRK_COMPOSITE, 634 - .data = (const struct snd_usb_audio_quirk[]) { 832 + QUIRK_DATA_COMPOSITE { 833 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 834 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 635 835 { 636 - .ifnum = 0, 637 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 638 - }, 639 - { 640 - .ifnum = 1, 641 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 642 - }, 643 - { 644 - .ifnum = 2, 645 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 646 - .data = & (const struct snd_usb_midi_endpoint_info) { 836 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 647 837 .out_cables = 0x0007, 648 838 .in_cables = 0x0007 649 839 } 650 840 }, 651 - { 652 - .ifnum = -1 653 - } 841 + QUIRK_COMPOSITE_END 654 842 } 655 843 } 656 844 }, ··· 652 864 * the 96kHz sample rate. 653 865 */ 654 866 USB_DEVICE(0x0582, 0x0010), 655 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 867 + QUIRK_DRIVER_INFO { 656 868 .vendor_name = "EDIROL", 657 869 .product_name = "UA-5", 658 - .ifnum = QUIRK_ANY_INTERFACE, 659 - .type = QUIRK_COMPOSITE, 660 - .data = (const struct snd_usb_audio_quirk[]) { 661 - { 662 - .ifnum = 1, 663 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 664 - }, 665 - { 666 - .ifnum = 2, 667 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 668 - }, 669 - { 670 - .ifnum = -1 671 - } 870 + QUIRK_DATA_COMPOSITE { 871 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 872 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 873 + QUIRK_COMPOSITE_END 672 874 } 673 875 } 674 876 }, 675 877 { 676 878 /* has ID 0x0013 when not in "Advanced Driver" mode */ 677 879 USB_DEVICE(0x0582, 0x0012), 678 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 880 + QUIRK_DRIVER_INFO { 679 881 .vendor_name = "Roland", 680 882 .product_name = "XV-5050", 681 - .ifnum = 0, 682 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 683 - .data = & (const struct snd_usb_midi_endpoint_info) { 883 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 684 884 .out_cables = 0x0001, 685 885 .in_cables = 0x0001 686 886 } ··· 677 901 { 678 902 /* has ID 0x0015 when not in "Advanced Driver" mode */ 679 903 USB_DEVICE(0x0582, 0x0014), 680 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 904 + QUIRK_DRIVER_INFO { 681 905 .vendor_name = "EDIROL", 682 906 .product_name = "UM-880", 683 - .ifnum = 0, 684 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 685 - .data = & (const struct snd_usb_midi_endpoint_info) { 907 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 686 908 .out_cables = 0x01ff, 687 909 .in_cables = 0x01ff 688 910 } ··· 689 915 { 690 916 /* has ID 0x0017 when not in "Advanced Driver" mode */ 691 917 USB_DEVICE(0x0582, 0x0016), 692 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 918 + QUIRK_DRIVER_INFO { 693 919 .vendor_name = "EDIROL", 694 920 .product_name = "SD-90", 695 - .ifnum = QUIRK_ANY_INTERFACE, 696 - .type = QUIRK_COMPOSITE, 697 - .data = (const struct snd_usb_audio_quirk[]) { 921 + QUIRK_DATA_COMPOSITE { 922 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 923 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 698 924 { 699 - .ifnum = 0, 700 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 701 - }, 702 - { 703 - .ifnum = 1, 704 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 705 - }, 706 - { 707 - .ifnum = 2, 708 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 709 - .data = & (const struct snd_usb_midi_endpoint_info) { 925 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 710 926 .out_cables = 0x000f, 711 927 .in_cables = 0x000f 712 928 } 713 929 }, 714 - { 715 - .ifnum = -1 716 - } 930 + QUIRK_COMPOSITE_END 717 931 } 718 932 } 719 933 }, 720 934 { 721 935 /* has ID 0x001c when not in "Advanced Driver" mode */ 722 936 USB_DEVICE(0x0582, 0x001b), 723 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 937 + QUIRK_DRIVER_INFO { 724 938 .vendor_name = "Roland", 725 939 .product_name = "MMP-2", 726 - .ifnum = QUIRK_ANY_INTERFACE, 727 - .type = QUIRK_COMPOSITE, 728 - .data = (const struct snd_usb_audio_quirk[]) { 940 + QUIRK_DATA_COMPOSITE { 941 + { QUIRK_DATA_IGNORE(0) }, 942 + { QUIRK_DATA_IGNORE(1) }, 729 943 { 730 - .ifnum = 0, 731 - .type = QUIRK_IGNORE_INTERFACE 732 - }, 733 - { 734 - .ifnum = 1, 735 - .type = QUIRK_IGNORE_INTERFACE 736 - }, 737 - { 738 - .ifnum = 2, 739 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 740 - .data = & (const struct snd_usb_midi_endpoint_info) { 944 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 741 945 .out_cables = 0x0001, 742 946 .in_cables = 0x0001 743 947 } 744 948 }, 745 - { 746 - .ifnum = -1 747 - } 949 + QUIRK_COMPOSITE_END 748 950 } 749 951 } 750 952 }, 751 953 { 752 954 /* has ID 0x001e when not in "Advanced Driver" mode */ 753 955 USB_DEVICE(0x0582, 0x001d), 754 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 956 + QUIRK_DRIVER_INFO { 755 957 .vendor_name = "Roland", 756 958 .product_name = "V-SYNTH", 757 - .ifnum = 0, 758 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 759 - .data = & (const struct snd_usb_midi_endpoint_info) { 959 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 760 960 .out_cables = 0x0001, 761 961 .in_cables = 0x0001 762 962 } ··· 739 991 { 740 992 /* has ID 0x0024 when not in "Advanced Driver" mode */ 741 993 USB_DEVICE(0x0582, 0x0023), 742 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 994 + QUIRK_DRIVER_INFO { 743 995 .vendor_name = "EDIROL", 744 996 .product_name = "UM-550", 745 - .ifnum = 0, 746 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 747 - .data = & (const struct snd_usb_midi_endpoint_info) { 997 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 748 998 .out_cables = 0x003f, 749 999 .in_cables = 0x003f 750 1000 } ··· 755 1009 * and no MIDI. 756 1010 */ 757 1011 USB_DEVICE(0x0582, 0x0025), 758 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1012 + QUIRK_DRIVER_INFO { 759 1013 .vendor_name = "EDIROL", 760 1014 .product_name = "UA-20", 761 - .ifnum = QUIRK_ANY_INTERFACE, 762 - .type = QUIRK_COMPOSITE, 763 - .data = (const struct snd_usb_audio_quirk[]) { 1015 + QUIRK_DATA_COMPOSITE { 1016 + { QUIRK_DATA_IGNORE(0) }, 764 1017 { 765 - .ifnum = 0, 766 - .type = QUIRK_IGNORE_INTERFACE 767 - }, 768 - { 769 - .ifnum = 1, 770 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 771 - .data = & (const struct audioformat) { 1018 + QUIRK_DATA_AUDIOFORMAT(1) { 772 1019 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 773 1020 .channels = 2, 774 1021 .iface = 1, ··· 776 1037 } 777 1038 }, 778 1039 { 779 - .ifnum = 2, 780 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 781 - .data = & (const struct audioformat) { 1040 + QUIRK_DATA_AUDIOFORMAT(2) { 782 1041 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 783 1042 .channels = 2, 784 1043 .iface = 2, ··· 791 1054 } 792 1055 }, 793 1056 { 794 - .ifnum = 3, 795 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 796 - .data = & (const struct snd_usb_midi_endpoint_info) { 1057 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 797 1058 .out_cables = 0x0001, 798 1059 .in_cables = 0x0001 799 1060 } 800 1061 }, 801 - { 802 - .ifnum = -1 803 - } 1062 + QUIRK_COMPOSITE_END 804 1063 } 805 1064 } 806 1065 }, 807 1066 { 808 1067 /* has ID 0x0028 when not in "Advanced Driver" mode */ 809 1068 USB_DEVICE(0x0582, 0x0027), 810 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1069 + QUIRK_DRIVER_INFO { 811 1070 .vendor_name = "EDIROL", 812 1071 .product_name = "SD-20", 813 - .ifnum = 0, 814 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 815 - .data = & (const struct snd_usb_midi_endpoint_info) { 1072 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 816 1073 .out_cables = 0x0003, 817 1074 .in_cables = 0x0007 818 1075 } ··· 815 1084 { 816 1085 /* has ID 0x002a when not in "Advanced Driver" mode */ 817 1086 USB_DEVICE(0x0582, 0x0029), 818 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1087 + QUIRK_DRIVER_INFO { 819 1088 .vendor_name = "EDIROL", 820 1089 .product_name = "SD-80", 821 - .ifnum = 0, 822 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 823 - .data = & (const struct snd_usb_midi_endpoint_info) { 1090 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 824 1091 .out_cables = 0x000f, 825 1092 .in_cables = 0x000f 826 1093 } ··· 831 1102 * but offers only 16-bit PCM and no MIDI. 832 1103 */ 833 1104 USB_DEVICE_VENDOR_SPEC(0x0582, 0x002b), 834 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1105 + QUIRK_DRIVER_INFO { 835 1106 .vendor_name = "EDIROL", 836 1107 .product_name = "UA-700", 837 - .ifnum = QUIRK_ANY_INTERFACE, 838 - .type = QUIRK_COMPOSITE, 839 - .data = (const struct snd_usb_audio_quirk[]) { 840 - { 841 - .ifnum = 1, 842 - .type = QUIRK_AUDIO_EDIROL_UAXX 843 - }, 844 - { 845 - .ifnum = 2, 846 - .type = QUIRK_AUDIO_EDIROL_UAXX 847 - }, 848 - { 849 - .ifnum = 3, 850 - .type = QUIRK_AUDIO_EDIROL_UAXX 851 - }, 852 - { 853 - .ifnum = -1 854 - } 1108 + QUIRK_DATA_COMPOSITE { 1109 + { QUIRK_DATA_EDIROL_UAXX(1) }, 1110 + { QUIRK_DATA_EDIROL_UAXX(2) }, 1111 + { QUIRK_DATA_EDIROL_UAXX(3) }, 1112 + QUIRK_COMPOSITE_END 855 1113 } 856 1114 } 857 1115 }, 858 1116 { 859 1117 /* has ID 0x002e when not in "Advanced Driver" mode */ 860 1118 USB_DEVICE(0x0582, 0x002d), 861 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1119 + QUIRK_DRIVER_INFO { 862 1120 .vendor_name = "Roland", 863 1121 .product_name = "XV-2020", 864 - .ifnum = 0, 865 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 866 - .data = & (const struct snd_usb_midi_endpoint_info) { 1122 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 867 1123 .out_cables = 0x0001, 868 1124 .in_cables = 0x0001 869 1125 } ··· 857 1143 { 858 1144 /* has ID 0x0030 when not in "Advanced Driver" mode */ 859 1145 USB_DEVICE(0x0582, 0x002f), 860 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1146 + QUIRK_DRIVER_INFO { 861 1147 .vendor_name = "Roland", 862 1148 .product_name = "VariOS", 863 - .ifnum = 0, 864 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 865 - .data = & (const struct snd_usb_midi_endpoint_info) { 1149 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 866 1150 .out_cables = 0x0007, 867 1151 .in_cables = 0x0007 868 1152 } ··· 869 1157 { 870 1158 /* has ID 0x0034 when not in "Advanced Driver" mode */ 871 1159 USB_DEVICE(0x0582, 0x0033), 872 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1160 + QUIRK_DRIVER_INFO { 873 1161 .vendor_name = "EDIROL", 874 1162 .product_name = "PCR", 875 - .ifnum = 0, 876 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 877 - .data = & (const struct snd_usb_midi_endpoint_info) { 1163 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 878 1164 .out_cables = 0x0003, 879 1165 .in_cables = 0x0007 880 1166 } ··· 884 1174 * later revisions use IDs 0x0054 and 0x00a2. 885 1175 */ 886 1176 USB_DEVICE(0x0582, 0x0037), 887 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1177 + QUIRK_DRIVER_INFO { 888 1178 .vendor_name = "Roland", 889 1179 .product_name = "Digital Piano", 890 - .ifnum = 0, 891 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 892 - .data = & (const struct snd_usb_midi_endpoint_info) { 1180 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 893 1181 .out_cables = 0x0001, 894 1182 .in_cables = 0x0001 895 1183 } ··· 900 1192 * and no MIDI. 901 1193 */ 902 1194 USB_DEVICE_VENDOR_SPEC(0x0582, 0x003b), 903 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1195 + QUIRK_DRIVER_INFO { 904 1196 .vendor_name = "BOSS", 905 1197 .product_name = "GS-10", 906 - .ifnum = QUIRK_ANY_INTERFACE, 907 - .type = QUIRK_COMPOSITE, 908 - .data = & (const struct snd_usb_audio_quirk[]) { 909 - { 910 - .ifnum = 1, 911 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 912 - }, 913 - { 914 - .ifnum = 2, 915 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 916 - }, 917 - { 918 - .ifnum = 3, 919 - .type = QUIRK_MIDI_STANDARD_INTERFACE 920 - }, 921 - { 922 - .ifnum = -1 923 - } 1198 + QUIRK_DATA_COMPOSITE { 1199 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1200 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1201 + { QUIRK_DATA_STANDARD_MIDI(3) }, 1202 + QUIRK_COMPOSITE_END 924 1203 } 925 1204 } 926 1205 }, 927 1206 { 928 1207 /* has ID 0x0041 when not in "Advanced Driver" mode */ 929 1208 USB_DEVICE(0x0582, 0x0040), 930 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1209 + QUIRK_DRIVER_INFO { 931 1210 .vendor_name = "Roland", 932 1211 .product_name = "GI-20", 933 - .ifnum = 0, 934 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 935 - .data = & (const struct snd_usb_midi_endpoint_info) { 1212 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 936 1213 .out_cables = 0x0001, 937 1214 .in_cables = 0x0001 938 1215 } ··· 926 1233 { 927 1234 /* has ID 0x0043 when not in "Advanced Driver" mode */ 928 1235 USB_DEVICE(0x0582, 0x0042), 929 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1236 + QUIRK_DRIVER_INFO { 930 1237 .vendor_name = "Roland", 931 1238 .product_name = "RS-70", 932 - .ifnum = 0, 933 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 934 - .data = & (const struct snd_usb_midi_endpoint_info) { 1239 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 935 1240 .out_cables = 0x0001, 936 1241 .in_cables = 0x0001 937 1242 } ··· 938 1247 { 939 1248 /* has ID 0x0049 when not in "Advanced Driver" mode */ 940 1249 USB_DEVICE(0x0582, 0x0047), 941 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1250 + QUIRK_DRIVER_INFO { 942 1251 /* .vendor_name = "EDIROL", */ 943 1252 /* .product_name = "UR-80", */ 944 - .ifnum = QUIRK_ANY_INTERFACE, 945 - .type = QUIRK_COMPOSITE, 946 - .data = (const struct snd_usb_audio_quirk[]) { 1253 + QUIRK_DATA_COMPOSITE { 947 1254 /* in the 96 kHz modes, only interface 1 is there */ 948 - { 949 - .ifnum = 1, 950 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 951 - }, 952 - { 953 - .ifnum = 2, 954 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 955 - }, 956 - { 957 - .ifnum = -1 958 - } 1255 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1256 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1257 + QUIRK_COMPOSITE_END 959 1258 } 960 1259 } 961 1260 }, 962 1261 { 963 1262 /* has ID 0x004a when not in "Advanced Driver" mode */ 964 1263 USB_DEVICE(0x0582, 0x0048), 965 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1264 + QUIRK_DRIVER_INFO { 966 1265 /* .vendor_name = "EDIROL", */ 967 1266 /* .product_name = "UR-80", */ 968 - .ifnum = 0, 969 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 970 - .data = & (const struct snd_usb_midi_endpoint_info) { 1267 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 971 1268 .out_cables = 0x0003, 972 1269 .in_cables = 0x0007 973 1270 } ··· 964 1285 { 965 1286 /* has ID 0x004e when not in "Advanced Driver" mode */ 966 1287 USB_DEVICE(0x0582, 0x004c), 967 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1288 + QUIRK_DRIVER_INFO { 968 1289 .vendor_name = "EDIROL", 969 1290 .product_name = "PCR-A", 970 - .ifnum = QUIRK_ANY_INTERFACE, 971 - .type = QUIRK_COMPOSITE, 972 - .data = (const struct snd_usb_audio_quirk[]) { 973 - { 974 - .ifnum = 1, 975 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 976 - }, 977 - { 978 - .ifnum = 2, 979 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 980 - }, 981 - { 982 - .ifnum = -1 983 - } 1291 + QUIRK_DATA_COMPOSITE { 1292 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1293 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1294 + QUIRK_COMPOSITE_END 984 1295 } 985 1296 } 986 1297 }, 987 1298 { 988 1299 /* has ID 0x004f when not in "Advanced Driver" mode */ 989 1300 USB_DEVICE(0x0582, 0x004d), 990 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1301 + QUIRK_DRIVER_INFO { 991 1302 .vendor_name = "EDIROL", 992 1303 .product_name = "PCR-A", 993 - .ifnum = 0, 994 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 995 - .data = & (const struct snd_usb_midi_endpoint_info) { 1304 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 996 1305 .out_cables = 0x0003, 997 1306 .in_cables = 0x0007 998 1307 } ··· 992 1325 * is standard compliant, but has only 16-bit PCM. 993 1326 */ 994 1327 USB_DEVICE(0x0582, 0x0050), 995 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1328 + QUIRK_DRIVER_INFO { 996 1329 .vendor_name = "EDIROL", 997 1330 .product_name = "UA-3FX", 998 - .ifnum = QUIRK_ANY_INTERFACE, 999 - .type = QUIRK_COMPOSITE, 1000 - .data = (const struct snd_usb_audio_quirk[]) { 1001 - { 1002 - .ifnum = 1, 1003 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1004 - }, 1005 - { 1006 - .ifnum = 2, 1007 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1008 - }, 1009 - { 1010 - .ifnum = -1 1011 - } 1331 + QUIRK_DATA_COMPOSITE { 1332 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1333 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1334 + QUIRK_COMPOSITE_END 1012 1335 } 1013 1336 } 1014 1337 }, 1015 1338 { 1016 1339 USB_DEVICE(0x0582, 0x0052), 1017 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1340 + QUIRK_DRIVER_INFO { 1018 1341 .vendor_name = "EDIROL", 1019 1342 .product_name = "UM-1SX", 1020 - .ifnum = 0, 1021 - .type = QUIRK_MIDI_STANDARD_INTERFACE 1343 + QUIRK_DATA_STANDARD_MIDI(0) 1022 1344 } 1023 1345 }, 1024 1346 { 1025 1347 USB_DEVICE(0x0582, 0x0060), 1026 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1348 + QUIRK_DRIVER_INFO { 1027 1349 .vendor_name = "Roland", 1028 1350 .product_name = "EXR Series", 1029 - .ifnum = 0, 1030 - .type = QUIRK_MIDI_STANDARD_INTERFACE 1351 + QUIRK_DATA_STANDARD_MIDI(0) 1031 1352 } 1032 1353 }, 1033 1354 { 1034 1355 /* has ID 0x0066 when not in "Advanced Driver" mode */ 1035 1356 USB_DEVICE(0x0582, 0x0064), 1036 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1357 + QUIRK_DRIVER_INFO { 1037 1358 /* .vendor_name = "EDIROL", */ 1038 1359 /* .product_name = "PCR-1", */ 1039 - .ifnum = QUIRK_ANY_INTERFACE, 1040 - .type = QUIRK_COMPOSITE, 1041 - .data = (const struct snd_usb_audio_quirk[]) { 1042 - { 1043 - .ifnum = 1, 1044 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1045 - }, 1046 - { 1047 - .ifnum = 2, 1048 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1049 - }, 1050 - { 1051 - .ifnum = -1 1052 - } 1360 + QUIRK_DATA_COMPOSITE { 1361 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1362 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1363 + QUIRK_COMPOSITE_END 1053 1364 } 1054 1365 } 1055 1366 }, 1056 1367 { 1057 1368 /* has ID 0x0067 when not in "Advanced Driver" mode */ 1058 1369 USB_DEVICE(0x0582, 0x0065), 1059 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1370 + QUIRK_DRIVER_INFO { 1060 1371 /* .vendor_name = "EDIROL", */ 1061 1372 /* .product_name = "PCR-1", */ 1062 - .ifnum = 0, 1063 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1064 - .data = & (const struct snd_usb_midi_endpoint_info) { 1373 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1065 1374 .out_cables = 0x0001, 1066 1375 .in_cables = 0x0003 1067 1376 } ··· 1046 1403 { 1047 1404 /* has ID 0x006e when not in "Advanced Driver" mode */ 1048 1405 USB_DEVICE(0x0582, 0x006d), 1049 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1406 + QUIRK_DRIVER_INFO { 1050 1407 .vendor_name = "Roland", 1051 1408 .product_name = "FANTOM-X", 1052 - .ifnum = 0, 1053 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1054 - .data = & (const struct snd_usb_midi_endpoint_info) { 1409 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1055 1410 .out_cables = 0x0001, 1056 1411 .in_cables = 0x0001 1057 1412 } ··· 1062 1421 * offers only 16-bit PCM at 44.1 kHz and no MIDI. 1063 1422 */ 1064 1423 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0074), 1065 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1424 + QUIRK_DRIVER_INFO { 1066 1425 .vendor_name = "EDIROL", 1067 1426 .product_name = "UA-25", 1068 - .ifnum = QUIRK_ANY_INTERFACE, 1069 - .type = QUIRK_COMPOSITE, 1070 - .data = (const struct snd_usb_audio_quirk[]) { 1071 - { 1072 - .ifnum = 0, 1073 - .type = QUIRK_AUDIO_EDIROL_UAXX 1074 - }, 1075 - { 1076 - .ifnum = 1, 1077 - .type = QUIRK_AUDIO_EDIROL_UAXX 1078 - }, 1079 - { 1080 - .ifnum = 2, 1081 - .type = QUIRK_AUDIO_EDIROL_UAXX 1082 - }, 1083 - { 1084 - .ifnum = -1 1085 - } 1427 + QUIRK_DATA_COMPOSITE { 1428 + { QUIRK_DATA_EDIROL_UAXX(0) }, 1429 + { QUIRK_DATA_EDIROL_UAXX(1) }, 1430 + { QUIRK_DATA_EDIROL_UAXX(2) }, 1431 + QUIRK_COMPOSITE_END 1086 1432 } 1087 1433 } 1088 1434 }, 1089 1435 { 1090 1436 /* has ID 0x0076 when not in "Advanced Driver" mode */ 1091 1437 USB_DEVICE(0x0582, 0x0075), 1092 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1438 + QUIRK_DRIVER_INFO { 1093 1439 .vendor_name = "BOSS", 1094 1440 .product_name = "DR-880", 1095 - .ifnum = 0, 1096 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1097 - .data = & (const struct snd_usb_midi_endpoint_info) { 1441 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1098 1442 .out_cables = 0x0001, 1099 1443 .in_cables = 0x0001 1100 1444 } ··· 1088 1462 { 1089 1463 /* has ID 0x007b when not in "Advanced Driver" mode */ 1090 1464 USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a), 1091 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1465 + QUIRK_DRIVER_INFO { 1092 1466 .vendor_name = "Roland", 1093 1467 /* "RD" or "RD-700SX"? */ 1094 - .ifnum = 0, 1095 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1096 - .data = & (const struct snd_usb_midi_endpoint_info) { 1468 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1097 1469 .out_cables = 0x0003, 1098 1470 .in_cables = 0x0003 1099 1471 } ··· 1100 1476 { 1101 1477 /* has ID 0x0081 when not in "Advanced Driver" mode */ 1102 1478 USB_DEVICE(0x0582, 0x0080), 1103 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1479 + QUIRK_DRIVER_INFO { 1104 1480 .vendor_name = "Roland", 1105 1481 .product_name = "G-70", 1106 - .ifnum = 0, 1107 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1108 - .data = & (const struct snd_usb_midi_endpoint_info) { 1482 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1109 1483 .out_cables = 0x0001, 1110 1484 .in_cables = 0x0001 1111 1485 } ··· 1112 1490 { 1113 1491 /* has ID 0x008c when not in "Advanced Driver" mode */ 1114 1492 USB_DEVICE(0x0582, 0x008b), 1115 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1493 + QUIRK_DRIVER_INFO { 1116 1494 .vendor_name = "EDIROL", 1117 1495 .product_name = "PC-50", 1118 - .ifnum = 0, 1119 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1120 - .data = & (const struct snd_usb_midi_endpoint_info) { 1496 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1121 1497 .out_cables = 0x0001, 1122 1498 .in_cables = 0x0001 1123 1499 } ··· 1127 1507 * is standard compliant, but has only 16-bit PCM and no MIDI. 1128 1508 */ 1129 1509 USB_DEVICE(0x0582, 0x00a3), 1130 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1510 + QUIRK_DRIVER_INFO { 1131 1511 .vendor_name = "EDIROL", 1132 1512 .product_name = "UA-4FX", 1133 - .ifnum = QUIRK_ANY_INTERFACE, 1134 - .type = QUIRK_COMPOSITE, 1135 - .data = (const struct snd_usb_audio_quirk[]) { 1136 - { 1137 - .ifnum = 0, 1138 - .type = QUIRK_AUDIO_EDIROL_UAXX 1139 - }, 1140 - { 1141 - .ifnum = 1, 1142 - .type = QUIRK_AUDIO_EDIROL_UAXX 1143 - }, 1144 - { 1145 - .ifnum = 2, 1146 - .type = QUIRK_AUDIO_EDIROL_UAXX 1147 - }, 1148 - { 1149 - .ifnum = -1 1150 - } 1513 + QUIRK_DATA_COMPOSITE { 1514 + { QUIRK_DATA_EDIROL_UAXX(0) }, 1515 + { QUIRK_DATA_EDIROL_UAXX(1) }, 1516 + { QUIRK_DATA_EDIROL_UAXX(2) }, 1517 + QUIRK_COMPOSITE_END 1151 1518 } 1152 1519 } 1153 1520 }, 1154 1521 { 1155 1522 /* Edirol M-16DX */ 1156 1523 USB_DEVICE(0x0582, 0x00c4), 1157 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1158 - .ifnum = QUIRK_ANY_INTERFACE, 1159 - .type = QUIRK_COMPOSITE, 1160 - .data = (const struct snd_usb_audio_quirk[]) { 1524 + QUIRK_DRIVER_INFO { 1525 + QUIRK_DATA_COMPOSITE { 1526 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 1527 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1161 1528 { 1162 - .ifnum = 0, 1163 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1164 - }, 1165 - { 1166 - .ifnum = 1, 1167 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1168 - }, 1169 - { 1170 - .ifnum = 2, 1171 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1172 - .data = & (const struct snd_usb_midi_endpoint_info) { 1529 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1173 1530 .out_cables = 0x0001, 1174 1531 .in_cables = 0x0001 1175 1532 } 1176 1533 }, 1177 - { 1178 - .ifnum = -1 1179 - } 1534 + QUIRK_COMPOSITE_END 1180 1535 } 1181 1536 } 1182 1537 }, ··· 1161 1566 * offers only 16-bit PCM at 44.1 kHz and no MIDI. 1162 1567 */ 1163 1568 USB_DEVICE_VENDOR_SPEC(0x0582, 0x00e6), 1164 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1569 + QUIRK_DRIVER_INFO { 1165 1570 .vendor_name = "EDIROL", 1166 1571 .product_name = "UA-25EX", 1167 - .ifnum = QUIRK_ANY_INTERFACE, 1168 - .type = QUIRK_COMPOSITE, 1169 - .data = (const struct snd_usb_audio_quirk[]) { 1170 - { 1171 - .ifnum = 0, 1172 - .type = QUIRK_AUDIO_EDIROL_UAXX 1173 - }, 1174 - { 1175 - .ifnum = 1, 1176 - .type = QUIRK_AUDIO_EDIROL_UAXX 1177 - }, 1178 - { 1179 - .ifnum = 2, 1180 - .type = QUIRK_AUDIO_EDIROL_UAXX 1181 - }, 1182 - { 1183 - .ifnum = -1 1184 - } 1572 + QUIRK_DATA_COMPOSITE { 1573 + { QUIRK_DATA_EDIROL_UAXX(0) }, 1574 + { QUIRK_DATA_EDIROL_UAXX(1) }, 1575 + { QUIRK_DATA_EDIROL_UAXX(2) }, 1576 + QUIRK_COMPOSITE_END 1185 1577 } 1186 1578 } 1187 1579 }, 1188 1580 { 1189 1581 /* Edirol UM-3G */ 1190 1582 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0108), 1191 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1192 - .ifnum = 0, 1193 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1194 - .data = & (const struct snd_usb_midi_endpoint_info) { 1583 + QUIRK_DRIVER_INFO { 1584 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(0) { 1195 1585 .out_cables = 0x0007, 1196 1586 .in_cables = 0x0007 1197 1587 } ··· 1185 1605 { 1186 1606 /* BOSS ME-25 */ 1187 1607 USB_DEVICE(0x0582, 0x0113), 1188 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1189 - .ifnum = QUIRK_ANY_INTERFACE, 1190 - .type = QUIRK_COMPOSITE, 1191 - .data = (const struct snd_usb_audio_quirk[]) { 1608 + QUIRK_DRIVER_INFO { 1609 + QUIRK_DATA_COMPOSITE { 1610 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 1611 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1192 1612 { 1193 - .ifnum = 0, 1194 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1195 - }, 1196 - { 1197 - .ifnum = 1, 1198 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1199 - }, 1200 - { 1201 - .ifnum = 2, 1202 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1203 - .data = & (const struct snd_usb_midi_endpoint_info) { 1613 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1204 1614 .out_cables = 0x0001, 1205 1615 .in_cables = 0x0001 1206 1616 } 1207 1617 }, 1208 - { 1209 - .ifnum = -1 1210 - } 1618 + QUIRK_COMPOSITE_END 1211 1619 } 1212 1620 } 1213 1621 }, 1214 1622 { 1215 1623 /* only 44.1 kHz works at the moment */ 1216 1624 USB_DEVICE(0x0582, 0x0120), 1217 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1625 + QUIRK_DRIVER_INFO { 1218 1626 /* .vendor_name = "Roland", */ 1219 1627 /* .product_name = "OCTO-CAPTURE", */ 1220 - .ifnum = QUIRK_ANY_INTERFACE, 1221 - .type = QUIRK_COMPOSITE, 1222 - .data = (const struct snd_usb_audio_quirk[]) { 1628 + QUIRK_DATA_COMPOSITE { 1223 1629 { 1224 - .ifnum = 0, 1225 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1226 - .data = & (const struct audioformat) { 1630 + QUIRK_DATA_AUDIOFORMAT(0) { 1227 1631 .formats = SNDRV_PCM_FMTBIT_S32_LE, 1228 1632 .channels = 10, 1229 1633 .iface = 0, ··· 1223 1659 } 1224 1660 }, 1225 1661 { 1226 - .ifnum = 1, 1227 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1228 - .data = & (const struct audioformat) { 1662 + QUIRK_DATA_AUDIOFORMAT(1) { 1229 1663 .formats = SNDRV_PCM_FMTBIT_S32_LE, 1230 1664 .channels = 12, 1231 1665 .iface = 1, ··· 1239 1677 } 1240 1678 }, 1241 1679 { 1242 - .ifnum = 2, 1243 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1244 - .data = & (const struct snd_usb_midi_endpoint_info) { 1680 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1245 1681 .out_cables = 0x0001, 1246 1682 .in_cables = 0x0001 1247 1683 } 1248 1684 }, 1249 - { 1250 - .ifnum = 3, 1251 - .type = QUIRK_IGNORE_INTERFACE 1252 - }, 1253 - { 1254 - .ifnum = 4, 1255 - .type = QUIRK_IGNORE_INTERFACE 1256 - }, 1257 - { 1258 - .ifnum = -1 1259 - } 1685 + { QUIRK_DATA_IGNORE(3) }, 1686 + { QUIRK_DATA_IGNORE(4) }, 1687 + QUIRK_COMPOSITE_END 1260 1688 } 1261 1689 } 1262 1690 }, 1263 1691 { 1264 1692 /* only 44.1 kHz works at the moment */ 1265 1693 USB_DEVICE(0x0582, 0x012f), 1266 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1694 + QUIRK_DRIVER_INFO { 1267 1695 /* .vendor_name = "Roland", */ 1268 1696 /* .product_name = "QUAD-CAPTURE", */ 1269 - .ifnum = QUIRK_ANY_INTERFACE, 1270 - .type = QUIRK_COMPOSITE, 1271 - .data = (const struct snd_usb_audio_quirk[]) { 1697 + QUIRK_DATA_COMPOSITE { 1272 1698 { 1273 - .ifnum = 0, 1274 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1275 - .data = & (const struct audioformat) { 1699 + QUIRK_DATA_AUDIOFORMAT(0) { 1276 1700 .formats = SNDRV_PCM_FMTBIT_S32_LE, 1277 1701 .channels = 4, 1278 1702 .iface = 0, ··· 1274 1726 } 1275 1727 }, 1276 1728 { 1277 - .ifnum = 1, 1278 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1279 - .data = & (const struct audioformat) { 1729 + QUIRK_DATA_AUDIOFORMAT(1) { 1280 1730 .formats = SNDRV_PCM_FMTBIT_S32_LE, 1281 1731 .channels = 6, 1282 1732 .iface = 1, ··· 1290 1744 } 1291 1745 }, 1292 1746 { 1293 - .ifnum = 2, 1294 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1295 - .data = & (const struct snd_usb_midi_endpoint_info) { 1747 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1296 1748 .out_cables = 0x0001, 1297 1749 .in_cables = 0x0001 1298 1750 } 1299 1751 }, 1300 - { 1301 - .ifnum = 3, 1302 - .type = QUIRK_IGNORE_INTERFACE 1303 - }, 1304 - { 1305 - .ifnum = 4, 1306 - .type = QUIRK_IGNORE_INTERFACE 1307 - }, 1308 - { 1309 - .ifnum = -1 1310 - } 1752 + { QUIRK_DATA_IGNORE(3) }, 1753 + { QUIRK_DATA_IGNORE(4) }, 1754 + QUIRK_COMPOSITE_END 1311 1755 } 1312 1756 } 1313 1757 }, 1314 1758 { 1315 1759 USB_DEVICE(0x0582, 0x0159), 1316 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1760 + QUIRK_DRIVER_INFO { 1317 1761 /* .vendor_name = "Roland", */ 1318 1762 /* .product_name = "UA-22", */ 1319 - .ifnum = QUIRK_ANY_INTERFACE, 1320 - .type = QUIRK_COMPOSITE, 1321 - .data = (const struct snd_usb_audio_quirk[]) { 1763 + QUIRK_DATA_COMPOSITE { 1764 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 1765 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 1322 1766 { 1323 - .ifnum = 0, 1324 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1325 - }, 1326 - { 1327 - .ifnum = 1, 1328 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1329 - }, 1330 - { 1331 - .ifnum = 2, 1332 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1333 - .data = & (const struct snd_usb_midi_endpoint_info) { 1767 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(2) { 1334 1768 .out_cables = 0x0001, 1335 1769 .in_cables = 0x0001 1336 1770 } 1337 1771 }, 1338 - { 1339 - .ifnum = -1 1340 - } 1772 + QUIRK_COMPOSITE_END 1341 1773 } 1342 1774 } 1343 1775 }, ··· 1323 1799 /* UA101 and co are supported by another driver */ 1324 1800 { 1325 1801 USB_DEVICE(0x0582, 0x0044), /* UA-1000 high speed */ 1326 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1802 + QUIRK_DRIVER_INFO { 1327 1803 .ifnum = QUIRK_NODEV_INTERFACE 1328 1804 }, 1329 1805 }, 1330 1806 { 1331 1807 USB_DEVICE(0x0582, 0x007d), /* UA-101 high speed */ 1332 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1808 + QUIRK_DRIVER_INFO { 1333 1809 .ifnum = QUIRK_NODEV_INTERFACE 1334 1810 }, 1335 1811 }, 1336 1812 { 1337 1813 USB_DEVICE(0x0582, 0x008d), /* UA-101 full speed */ 1338 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1814 + QUIRK_DRIVER_INFO { 1339 1815 .ifnum = QUIRK_NODEV_INTERFACE 1340 1816 }, 1341 1817 }, ··· 1346 1822 USB_DEVICE_ID_MATCH_INT_CLASS, 1347 1823 .idVendor = 0x0582, 1348 1824 .bInterfaceClass = USB_CLASS_VENDOR_SPEC, 1349 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 1825 + QUIRK_DRIVER_INFO { 1350 1826 .ifnum = QUIRK_ANY_INTERFACE, 1351 1827 .type = QUIRK_AUTODETECT 1352 1828 } ··· 1361 1837 * compliant USB MIDI ports for external MIDI and controls. 1362 1838 */ 1363 1839 USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000), 1364 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1840 + QUIRK_DRIVER_INFO { 1365 1841 .vendor_name = "Hercules", 1366 1842 .product_name = "DJ Console (WE)", 1367 - .ifnum = 4, 1368 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1369 - .data = & (const struct snd_usb_midi_endpoint_info) { 1843 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) { 1370 1844 .out_cables = 0x0001, 1371 1845 .in_cables = 0x0001 1372 1846 } ··· 1374 1852 /* Midiman/M-Audio devices */ 1375 1853 { 1376 1854 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1002), 1377 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1855 + QUIRK_DRIVER_INFO { 1378 1856 .vendor_name = "M-Audio", 1379 1857 .product_name = "MidiSport 2x2", 1380 - .ifnum = QUIRK_ANY_INTERFACE, 1381 - .type = QUIRK_MIDI_MIDIMAN, 1382 - .data = & (const struct snd_usb_midi_endpoint_info) { 1858 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1383 1859 .out_cables = 0x0003, 1384 1860 .in_cables = 0x0003 1385 1861 } ··· 1385 1865 }, 1386 1866 { 1387 1867 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1011), 1388 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1868 + QUIRK_DRIVER_INFO { 1389 1869 .vendor_name = "M-Audio", 1390 1870 .product_name = "MidiSport 1x1", 1391 - .ifnum = QUIRK_ANY_INTERFACE, 1392 - .type = QUIRK_MIDI_MIDIMAN, 1393 - .data = & (const struct snd_usb_midi_endpoint_info) { 1871 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1394 1872 .out_cables = 0x0001, 1395 1873 .in_cables = 0x0001 1396 1874 } ··· 1396 1878 }, 1397 1879 { 1398 1880 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1015), 1399 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1881 + QUIRK_DRIVER_INFO { 1400 1882 .vendor_name = "M-Audio", 1401 1883 .product_name = "Keystation", 1402 - .ifnum = QUIRK_ANY_INTERFACE, 1403 - .type = QUIRK_MIDI_MIDIMAN, 1404 - .data = & (const struct snd_usb_midi_endpoint_info) { 1884 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1405 1885 .out_cables = 0x0001, 1406 1886 .in_cables = 0x0001 1407 1887 } ··· 1407 1891 }, 1408 1892 { 1409 1893 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1021), 1410 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1894 + QUIRK_DRIVER_INFO { 1411 1895 .vendor_name = "M-Audio", 1412 1896 .product_name = "MidiSport 4x4", 1413 - .ifnum = QUIRK_ANY_INTERFACE, 1414 - .type = QUIRK_MIDI_MIDIMAN, 1415 - .data = & (const struct snd_usb_midi_endpoint_info) { 1897 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1416 1898 .out_cables = 0x000f, 1417 1899 .in_cables = 0x000f 1418 1900 } ··· 1423 1909 * Thanks to Olaf Giesbrecht <Olaf_Giesbrecht@yahoo.de> 1424 1910 */ 1425 1911 USB_DEVICE_VER(0x0763, 0x1031, 0x0100, 0x0109), 1426 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1912 + QUIRK_DRIVER_INFO { 1427 1913 .vendor_name = "M-Audio", 1428 1914 .product_name = "MidiSport 8x8", 1429 - .ifnum = QUIRK_ANY_INTERFACE, 1430 - .type = QUIRK_MIDI_MIDIMAN, 1431 - .data = & (const struct snd_usb_midi_endpoint_info) { 1915 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1432 1916 .out_cables = 0x01ff, 1433 1917 .in_cables = 0x01ff 1434 1918 } ··· 1434 1922 }, 1435 1923 { 1436 1924 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1033), 1437 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1925 + QUIRK_DRIVER_INFO { 1438 1926 .vendor_name = "M-Audio", 1439 1927 .product_name = "MidiSport 8x8", 1440 - .ifnum = QUIRK_ANY_INTERFACE, 1441 - .type = QUIRK_MIDI_MIDIMAN, 1442 - .data = & (const struct snd_usb_midi_endpoint_info) { 1928 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1443 1929 .out_cables = 0x01ff, 1444 1930 .in_cables = 0x01ff 1445 1931 } ··· 1445 1935 }, 1446 1936 { 1447 1937 USB_DEVICE_VENDOR_SPEC(0x0763, 0x1041), 1448 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1938 + QUIRK_DRIVER_INFO { 1449 1939 .vendor_name = "M-Audio", 1450 1940 .product_name = "MidiSport 2x4", 1451 - .ifnum = QUIRK_ANY_INTERFACE, 1452 - .type = QUIRK_MIDI_MIDIMAN, 1453 - .data = & (const struct snd_usb_midi_endpoint_info) { 1941 + QUIRK_DATA_MIDI_MIDIMAN(QUIRK_ANY_INTERFACE) { 1454 1942 .out_cables = 0x000f, 1455 1943 .in_cables = 0x0003 1456 1944 } ··· 1456 1948 }, 1457 1949 { 1458 1950 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2001), 1459 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1951 + QUIRK_DRIVER_INFO { 1460 1952 .vendor_name = "M-Audio", 1461 1953 .product_name = "Quattro", 1462 - .ifnum = QUIRK_ANY_INTERFACE, 1463 - .type = QUIRK_COMPOSITE, 1464 - .data = & (const struct snd_usb_audio_quirk[]) { 1954 + QUIRK_DATA_COMPOSITE { 1465 1955 /* 1466 1956 * Interfaces 0-2 are "Windows-compatible", 16-bit only, 1467 1957 * and share endpoints with the other interfaces. 1468 1958 * Ignore them. The other interfaces can do 24 bits, 1469 1959 * but captured samples are big-endian (see usbaudio.c). 1470 1960 */ 1961 + { QUIRK_DATA_IGNORE(0) }, 1962 + { QUIRK_DATA_IGNORE(1) }, 1963 + { QUIRK_DATA_IGNORE(2) }, 1964 + { QUIRK_DATA_IGNORE(3) }, 1965 + { QUIRK_DATA_STANDARD_AUDIO(4) }, 1966 + { QUIRK_DATA_STANDARD_AUDIO(5) }, 1967 + { QUIRK_DATA_IGNORE(6) }, 1968 + { QUIRK_DATA_STANDARD_AUDIO(7) }, 1969 + { QUIRK_DATA_STANDARD_AUDIO(8) }, 1471 1970 { 1472 - .ifnum = 0, 1473 - .type = QUIRK_IGNORE_INTERFACE 1474 - }, 1475 - { 1476 - .ifnum = 1, 1477 - .type = QUIRK_IGNORE_INTERFACE 1478 - }, 1479 - { 1480 - .ifnum = 2, 1481 - .type = QUIRK_IGNORE_INTERFACE 1482 - }, 1483 - { 1484 - .ifnum = 3, 1485 - .type = QUIRK_IGNORE_INTERFACE 1486 - }, 1487 - { 1488 - .ifnum = 4, 1489 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1490 - }, 1491 - { 1492 - .ifnum = 5, 1493 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1494 - }, 1495 - { 1496 - .ifnum = 6, 1497 - .type = QUIRK_IGNORE_INTERFACE 1498 - }, 1499 - { 1500 - .ifnum = 7, 1501 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1502 - }, 1503 - { 1504 - .ifnum = 8, 1505 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1506 - }, 1507 - { 1508 - .ifnum = 9, 1509 - .type = QUIRK_MIDI_MIDIMAN, 1510 - .data = & (const struct snd_usb_midi_endpoint_info) { 1971 + QUIRK_DATA_MIDI_MIDIMAN(9) { 1511 1972 .out_cables = 0x0001, 1512 1973 .in_cables = 0x0001 1513 1974 } 1514 1975 }, 1515 - { 1516 - .ifnum = -1 1517 - } 1976 + QUIRK_COMPOSITE_END 1518 1977 } 1519 1978 } 1520 1979 }, 1521 1980 { 1522 1981 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2003), 1523 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1982 + QUIRK_DRIVER_INFO { 1524 1983 .vendor_name = "M-Audio", 1525 1984 .product_name = "AudioPhile", 1526 - .ifnum = 6, 1527 - .type = QUIRK_MIDI_MIDIMAN, 1528 - .data = & (const struct snd_usb_midi_endpoint_info) { 1985 + QUIRK_DATA_MIDI_MIDIMAN(6) { 1529 1986 .out_cables = 0x0001, 1530 1987 .in_cables = 0x0001 1531 1988 } ··· 1498 2025 }, 1499 2026 { 1500 2027 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2008), 1501 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2028 + QUIRK_DRIVER_INFO { 1502 2029 .vendor_name = "M-Audio", 1503 2030 .product_name = "Ozone", 1504 - .ifnum = 3, 1505 - .type = QUIRK_MIDI_MIDIMAN, 1506 - .data = & (const struct snd_usb_midi_endpoint_info) { 2031 + QUIRK_DATA_MIDI_MIDIMAN(3) { 1507 2032 .out_cables = 0x0001, 1508 2033 .in_cables = 0x0001 1509 2034 } ··· 1509 2038 }, 1510 2039 { 1511 2040 USB_DEVICE_VENDOR_SPEC(0x0763, 0x200d), 1512 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2041 + QUIRK_DRIVER_INFO { 1513 2042 .vendor_name = "M-Audio", 1514 2043 .product_name = "OmniStudio", 1515 - .ifnum = QUIRK_ANY_INTERFACE, 1516 - .type = QUIRK_COMPOSITE, 1517 - .data = & (const struct snd_usb_audio_quirk[]) { 2044 + QUIRK_DATA_COMPOSITE { 2045 + { QUIRK_DATA_IGNORE(0) }, 2046 + { QUIRK_DATA_IGNORE(1) }, 2047 + { QUIRK_DATA_IGNORE(2) }, 2048 + { QUIRK_DATA_IGNORE(3) }, 2049 + { QUIRK_DATA_STANDARD_AUDIO(4) }, 2050 + { QUIRK_DATA_STANDARD_AUDIO(5) }, 2051 + { QUIRK_DATA_IGNORE(6) }, 2052 + { QUIRK_DATA_STANDARD_AUDIO(7) }, 2053 + { QUIRK_DATA_STANDARD_AUDIO(8) }, 1518 2054 { 1519 - .ifnum = 0, 1520 - .type = QUIRK_IGNORE_INTERFACE 1521 - }, 1522 - { 1523 - .ifnum = 1, 1524 - .type = QUIRK_IGNORE_INTERFACE 1525 - }, 1526 - { 1527 - .ifnum = 2, 1528 - .type = QUIRK_IGNORE_INTERFACE 1529 - }, 1530 - { 1531 - .ifnum = 3, 1532 - .type = QUIRK_IGNORE_INTERFACE 1533 - }, 1534 - { 1535 - .ifnum = 4, 1536 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1537 - }, 1538 - { 1539 - .ifnum = 5, 1540 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1541 - }, 1542 - { 1543 - .ifnum = 6, 1544 - .type = QUIRK_IGNORE_INTERFACE 1545 - }, 1546 - { 1547 - .ifnum = 7, 1548 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1549 - }, 1550 - { 1551 - .ifnum = 8, 1552 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1553 - }, 1554 - { 1555 - .ifnum = 9, 1556 - .type = QUIRK_MIDI_MIDIMAN, 1557 - .data = & (const struct snd_usb_midi_endpoint_info) { 2055 + QUIRK_DATA_MIDI_MIDIMAN(9) { 1558 2056 .out_cables = 0x0001, 1559 2057 .in_cables = 0x0001 1560 2058 } 1561 2059 }, 1562 - { 1563 - .ifnum = -1 1564 - } 2060 + QUIRK_COMPOSITE_END 1565 2061 } 1566 2062 } 1567 2063 }, 1568 2064 { 1569 2065 USB_DEVICE(0x0763, 0x2019), 1570 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2066 + QUIRK_DRIVER_INFO { 1571 2067 /* .vendor_name = "M-Audio", */ 1572 2068 /* .product_name = "Ozone Academic", */ 1573 - .ifnum = QUIRK_ANY_INTERFACE, 1574 - .type = QUIRK_COMPOSITE, 1575 - .data = & (const struct snd_usb_audio_quirk[]) { 2069 + QUIRK_DATA_COMPOSITE { 2070 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 2071 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 2072 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1576 2073 { 1577 - .ifnum = 0, 1578 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1579 - }, 1580 - { 1581 - .ifnum = 1, 1582 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1583 - }, 1584 - { 1585 - .ifnum = 2, 1586 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1587 - }, 1588 - { 1589 - .ifnum = 3, 1590 - .type = QUIRK_MIDI_MIDIMAN, 1591 - .data = & (const struct snd_usb_midi_endpoint_info) { 2074 + QUIRK_DATA_MIDI_MIDIMAN(3) { 1592 2075 .out_cables = 0x0001, 1593 2076 .in_cables = 0x0001 1594 2077 } 1595 2078 }, 1596 - { 1597 - .ifnum = -1 1598 - } 2079 + QUIRK_COMPOSITE_END 1599 2080 } 1600 2081 } 1601 2082 }, ··· 1557 2134 }, 1558 2135 { 1559 2136 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030), 1560 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2137 + QUIRK_DRIVER_INFO { 1561 2138 /* .vendor_name = "M-Audio", */ 1562 2139 /* .product_name = "Fast Track C400", */ 1563 - .ifnum = QUIRK_ANY_INTERFACE, 1564 - .type = QUIRK_COMPOSITE, 1565 - .data = &(const struct snd_usb_audio_quirk[]) { 1566 - { 1567 - .ifnum = 1, 1568 - .type = QUIRK_AUDIO_STANDARD_MIXER, 1569 - }, 2140 + QUIRK_DATA_COMPOSITE { 2141 + { QUIRK_DATA_STANDARD_MIXER(1) }, 1570 2142 /* Playback */ 1571 2143 { 1572 - .ifnum = 2, 1573 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1574 - .data = &(const struct audioformat) { 2144 + QUIRK_DATA_AUDIOFORMAT(2) { 1575 2145 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1576 2146 .channels = 6, 1577 2147 .iface = 2, ··· 1588 2172 }, 1589 2173 /* Capture */ 1590 2174 { 1591 - .ifnum = 3, 1592 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1593 - .data = &(const struct audioformat) { 2175 + QUIRK_DATA_AUDIOFORMAT(3) { 1594 2176 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1595 2177 .channels = 4, 1596 2178 .iface = 3, ··· 1610 2196 .clock = 0x80, 1611 2197 } 1612 2198 }, 1613 - /* MIDI */ 1614 - { 1615 - .ifnum = -1 /* Interface = 4 */ 1616 - } 2199 + /* MIDI: Interface = 4*/ 2200 + QUIRK_COMPOSITE_END 1617 2201 } 1618 2202 } 1619 2203 }, 1620 2204 { 1621 2205 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2031), 1622 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2206 + QUIRK_DRIVER_INFO { 1623 2207 /* .vendor_name = "M-Audio", */ 1624 2208 /* .product_name = "Fast Track C600", */ 1625 - .ifnum = QUIRK_ANY_INTERFACE, 1626 - .type = QUIRK_COMPOSITE, 1627 - .data = &(const struct snd_usb_audio_quirk[]) { 1628 - { 1629 - .ifnum = 1, 1630 - .type = QUIRK_AUDIO_STANDARD_MIXER, 1631 - }, 2209 + QUIRK_DATA_COMPOSITE { 2210 + { QUIRK_DATA_STANDARD_MIXER(1) }, 1632 2211 /* Playback */ 1633 2212 { 1634 - .ifnum = 2, 1635 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1636 - .data = &(const struct audioformat) { 2213 + QUIRK_DATA_AUDIOFORMAT(2) { 1637 2214 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1638 2215 .channels = 8, 1639 2216 .iface = 2, ··· 1648 2243 }, 1649 2244 /* Capture */ 1650 2245 { 1651 - .ifnum = 3, 1652 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1653 - .data = &(const struct audioformat) { 2246 + QUIRK_DATA_AUDIOFORMAT(3) { 1654 2247 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1655 2248 .channels = 6, 1656 2249 .iface = 3, ··· 1670 2267 .clock = 0x80, 1671 2268 } 1672 2269 }, 1673 - /* MIDI */ 1674 - { 1675 - .ifnum = -1 /* Interface = 4 */ 1676 - } 2270 + /* MIDI: Interface = 4 */ 2271 + QUIRK_COMPOSITE_END 1677 2272 } 1678 2273 } 1679 2274 }, 1680 2275 { 1681 2276 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2080), 1682 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2277 + QUIRK_DRIVER_INFO { 1683 2278 /* .vendor_name = "M-Audio", */ 1684 2279 /* .product_name = "Fast Track Ultra", */ 1685 - .ifnum = QUIRK_ANY_INTERFACE, 1686 - .type = QUIRK_COMPOSITE, 1687 - .data = & (const struct snd_usb_audio_quirk[]) { 2280 + QUIRK_DATA_COMPOSITE { 2281 + { QUIRK_DATA_STANDARD_MIXER(0) }, 1688 2282 { 1689 - .ifnum = 0, 1690 - .type = QUIRK_AUDIO_STANDARD_MIXER, 1691 - }, 1692 - { 1693 - .ifnum = 1, 1694 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1695 - .data = & (const struct audioformat) { 2283 + QUIRK_DATA_AUDIOFORMAT(1) { 1696 2284 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1697 2285 .channels = 8, 1698 2286 .iface = 1, ··· 1705 2311 } 1706 2312 }, 1707 2313 { 1708 - .ifnum = 2, 1709 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1710 - .data = & (const struct audioformat) { 2314 + QUIRK_DATA_AUDIOFORMAT(2) { 1711 2315 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1712 2316 .channels = 8, 1713 2317 .iface = 2, ··· 1727 2335 } 1728 2336 }, 1729 2337 /* interface 3 (MIDI) is standard compliant */ 1730 - { 1731 - .ifnum = -1 1732 - } 2338 + QUIRK_COMPOSITE_END 1733 2339 } 1734 2340 } 1735 2341 }, 1736 2342 { 1737 2343 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2081), 1738 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2344 + QUIRK_DRIVER_INFO { 1739 2345 /* .vendor_name = "M-Audio", */ 1740 2346 /* .product_name = "Fast Track Ultra 8R", */ 1741 - .ifnum = QUIRK_ANY_INTERFACE, 1742 - .type = QUIRK_COMPOSITE, 1743 - .data = & (const struct snd_usb_audio_quirk[]) { 2347 + QUIRK_DATA_COMPOSITE { 2348 + { QUIRK_DATA_STANDARD_MIXER(0) }, 1744 2349 { 1745 - .ifnum = 0, 1746 - .type = QUIRK_AUDIO_STANDARD_MIXER, 1747 - }, 1748 - { 1749 - .ifnum = 1, 1750 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1751 - .data = & (const struct audioformat) { 2350 + QUIRK_DATA_AUDIOFORMAT(1) { 1752 2351 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1753 2352 .channels = 8, 1754 2353 .iface = 1, ··· 1761 2378 } 1762 2379 }, 1763 2380 { 1764 - .ifnum = 2, 1765 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 1766 - .data = & (const struct audioformat) { 2381 + QUIRK_DATA_AUDIOFORMAT(2) { 1767 2382 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 1768 2383 .channels = 8, 1769 2384 .iface = 2, ··· 1783 2402 } 1784 2403 }, 1785 2404 /* interface 3 (MIDI) is standard compliant */ 1786 - { 1787 - .ifnum = -1 1788 - } 2405 + QUIRK_COMPOSITE_END 1789 2406 } 1790 2407 } 1791 2408 }, ··· 1791 2412 /* Casio devices */ 1792 2413 { 1793 2414 USB_DEVICE(0x07cf, 0x6801), 1794 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2415 + QUIRK_DRIVER_INFO { 1795 2416 .vendor_name = "Casio", 1796 2417 .product_name = "PL-40R", 1797 - .ifnum = 0, 1798 - .type = QUIRK_MIDI_YAMAHA 2418 + QUIRK_DATA_MIDI_YAMAHA(0) 1799 2419 } 1800 2420 }, 1801 2421 { 1802 2422 /* this ID is used by several devices without a product ID */ 1803 2423 USB_DEVICE(0x07cf, 0x6802), 1804 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2424 + QUIRK_DRIVER_INFO { 1805 2425 .vendor_name = "Casio", 1806 2426 .product_name = "Keyboard", 1807 - .ifnum = 0, 1808 - .type = QUIRK_MIDI_YAMAHA 2427 + QUIRK_DATA_MIDI_YAMAHA(0) 1809 2428 } 1810 2429 }, 1811 2430 ··· 1816 2439 .idVendor = 0x07fd, 1817 2440 .idProduct = 0x0001, 1818 2441 .bDeviceSubClass = 2, 1819 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2442 + QUIRK_DRIVER_INFO { 1820 2443 .vendor_name = "MOTU", 1821 2444 .product_name = "Fastlane", 1822 - .ifnum = QUIRK_ANY_INTERFACE, 1823 - .type = QUIRK_COMPOSITE, 1824 - .data = & (const struct snd_usb_audio_quirk[]) { 1825 - { 1826 - .ifnum = 0, 1827 - .type = QUIRK_MIDI_RAW_BYTES 1828 - }, 1829 - { 1830 - .ifnum = 1, 1831 - .type = QUIRK_IGNORE_INTERFACE 1832 - }, 1833 - { 1834 - .ifnum = -1 1835 - } 2445 + QUIRK_DATA_COMPOSITE { 2446 + { QUIRK_DATA_RAW_BYTES(0) }, 2447 + { QUIRK_DATA_IGNORE(1) }, 2448 + QUIRK_COMPOSITE_END 1836 2449 } 1837 2450 } 1838 2451 }, ··· 1830 2463 /* Emagic devices */ 1831 2464 { 1832 2465 USB_DEVICE(0x086a, 0x0001), 1833 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2466 + QUIRK_DRIVER_INFO { 1834 2467 .vendor_name = "Emagic", 1835 2468 .product_name = "Unitor8", 1836 - .ifnum = 2, 1837 - .type = QUIRK_MIDI_EMAGIC, 1838 - .data = & (const struct snd_usb_midi_endpoint_info) { 2469 + QUIRK_DATA_MIDI_EMAGIC(2) { 1839 2470 .out_cables = 0x80ff, 1840 2471 .in_cables = 0x80ff 1841 2472 } ··· 1841 2476 }, 1842 2477 { 1843 2478 USB_DEVICE(0x086a, 0x0002), 1844 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2479 + QUIRK_DRIVER_INFO { 1845 2480 .vendor_name = "Emagic", 1846 2481 /* .product_name = "AMT8", */ 1847 - .ifnum = 2, 1848 - .type = QUIRK_MIDI_EMAGIC, 1849 - .data = & (const struct snd_usb_midi_endpoint_info) { 2482 + QUIRK_DATA_MIDI_EMAGIC(2) { 1850 2483 .out_cables = 0x80ff, 1851 2484 .in_cables = 0x80ff 1852 2485 } ··· 1852 2489 }, 1853 2490 { 1854 2491 USB_DEVICE(0x086a, 0x0003), 1855 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2492 + QUIRK_DRIVER_INFO { 1856 2493 .vendor_name = "Emagic", 1857 2494 /* .product_name = "MT4", */ 1858 - .ifnum = 2, 1859 - .type = QUIRK_MIDI_EMAGIC, 1860 - .data = & (const struct snd_usb_midi_endpoint_info) { 2495 + QUIRK_DATA_MIDI_EMAGIC(2) { 1861 2496 .out_cables = 0x800f, 1862 2497 .in_cables = 0x8003 1863 2498 } ··· 1865 2504 /* KORG devices */ 1866 2505 { 1867 2506 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0200), 1868 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2507 + QUIRK_DRIVER_INFO { 1869 2508 .vendor_name = "KORG, Inc.", 1870 2509 /* .product_name = "PANDORA PX5D", */ 1871 - .ifnum = 3, 1872 - .type = QUIRK_MIDI_STANDARD_INTERFACE, 2510 + QUIRK_DATA_STANDARD_MIDI(3) 1873 2511 } 1874 2512 }, 1875 2513 1876 2514 { 1877 2515 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0201), 1878 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2516 + QUIRK_DRIVER_INFO { 1879 2517 .vendor_name = "KORG, Inc.", 1880 2518 /* .product_name = "ToneLab ST", */ 1881 - .ifnum = 3, 1882 - .type = QUIRK_MIDI_STANDARD_INTERFACE, 2519 + QUIRK_DATA_STANDARD_MIDI(3) 1883 2520 } 1884 2521 }, 1885 2522 1886 2523 { 1887 2524 USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204), 1888 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2525 + QUIRK_DRIVER_INFO { 1889 2526 .vendor_name = "KORG, Inc.", 1890 2527 /* .product_name = "ToneLab EX", */ 1891 - .ifnum = 3, 1892 - .type = QUIRK_MIDI_STANDARD_INTERFACE, 2528 + QUIRK_DATA_STANDARD_MIDI(3) 1893 2529 } 1894 2530 }, 1895 2531 1896 2532 /* AKAI devices */ 1897 2533 { 1898 2534 USB_DEVICE(0x09e8, 0x0062), 1899 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2535 + QUIRK_DRIVER_INFO { 1900 2536 .vendor_name = "AKAI", 1901 2537 .product_name = "MPD16", 1902 2538 .ifnum = 0, ··· 1904 2546 { 1905 2547 /* Akai MPC Element */ 1906 2548 USB_DEVICE(0x09e8, 0x0021), 1907 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1908 - .ifnum = QUIRK_ANY_INTERFACE, 1909 - .type = QUIRK_COMPOSITE, 1910 - .data = & (const struct snd_usb_audio_quirk[]) { 1911 - { 1912 - .ifnum = 0, 1913 - .type = QUIRK_IGNORE_INTERFACE 1914 - }, 1915 - { 1916 - .ifnum = 1, 1917 - .type = QUIRK_MIDI_STANDARD_INTERFACE 1918 - }, 1919 - { 1920 - .ifnum = -1 1921 - } 2549 + QUIRK_DRIVER_INFO { 2550 + QUIRK_DATA_COMPOSITE { 2551 + { QUIRK_DATA_IGNORE(0) }, 2552 + { QUIRK_DATA_STANDARD_MIDI(1) }, 2553 + QUIRK_COMPOSITE_END 1922 2554 } 1923 2555 } 1924 2556 }, ··· 1917 2569 { 1918 2570 /* Steinberg MI2 */ 1919 2571 USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040), 1920 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1921 - .ifnum = QUIRK_ANY_INTERFACE, 1922 - .type = QUIRK_COMPOSITE, 1923 - .data = & (const struct snd_usb_audio_quirk[]) { 2572 + QUIRK_DRIVER_INFO { 2573 + QUIRK_DATA_COMPOSITE { 2574 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 2575 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 2576 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1924 2577 { 1925 - .ifnum = 0, 1926 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1927 - }, 1928 - { 1929 - .ifnum = 1, 1930 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1931 - }, 1932 - { 1933 - .ifnum = 2, 1934 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1935 - }, 1936 - { 1937 - .ifnum = 3, 1938 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1939 - .data = &(const struct snd_usb_midi_endpoint_info) { 2578 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 1940 2579 .out_cables = 0x0001, 1941 2580 .in_cables = 0x0001 1942 2581 } 1943 2582 }, 1944 - { 1945 - .ifnum = -1 1946 - } 2583 + QUIRK_COMPOSITE_END 1947 2584 } 1948 2585 } 1949 2586 }, 1950 2587 { 1951 2588 /* Steinberg MI4 */ 1952 2589 USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040), 1953 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1954 - .ifnum = QUIRK_ANY_INTERFACE, 1955 - .type = QUIRK_COMPOSITE, 1956 - .data = & (const struct snd_usb_audio_quirk[]) { 2590 + QUIRK_DRIVER_INFO { 2591 + QUIRK_DATA_COMPOSITE { 2592 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 2593 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 2594 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 1957 2595 { 1958 - .ifnum = 0, 1959 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1960 - }, 1961 - { 1962 - .ifnum = 1, 1963 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1964 - }, 1965 - { 1966 - .ifnum = 2, 1967 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 1968 - }, 1969 - { 1970 - .ifnum = 3, 1971 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 1972 - .data = &(const struct snd_usb_midi_endpoint_info) { 2596 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 1973 2597 .out_cables = 0x0001, 1974 2598 .in_cables = 0x0001 1975 2599 } 1976 2600 }, 1977 - { 1978 - .ifnum = -1 1979 - } 2601 + QUIRK_COMPOSITE_END 1980 2602 } 1981 2603 } 1982 2604 }, ··· 1954 2636 /* TerraTec devices */ 1955 2637 { 1956 2638 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), 1957 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2639 + QUIRK_DRIVER_INFO { 1958 2640 .vendor_name = "TerraTec", 1959 2641 .product_name = "PHASE 26", 1960 - .ifnum = 3, 1961 - .type = QUIRK_MIDI_STANDARD_INTERFACE 2642 + QUIRK_DATA_STANDARD_MIDI(3) 1962 2643 } 1963 2644 }, 1964 2645 { 1965 2646 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), 1966 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2647 + QUIRK_DRIVER_INFO { 1967 2648 .vendor_name = "TerraTec", 1968 2649 .product_name = "PHASE 26", 1969 - .ifnum = 3, 1970 - .type = QUIRK_MIDI_STANDARD_INTERFACE 2650 + QUIRK_DATA_STANDARD_MIDI(3) 1971 2651 } 1972 2652 }, 1973 2653 { 1974 2654 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014), 1975 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2655 + QUIRK_DRIVER_INFO { 1976 2656 .vendor_name = "TerraTec", 1977 2657 .product_name = "PHASE 26", 1978 - .ifnum = 3, 1979 - .type = QUIRK_MIDI_STANDARD_INTERFACE 2658 + QUIRK_DATA_STANDARD_MIDI(3) 1980 2659 } 1981 2660 }, 1982 2661 { 1983 2662 USB_DEVICE(0x0ccd, 0x0035), 1984 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2663 + QUIRK_DRIVER_INFO { 1985 2664 .vendor_name = "Miditech", 1986 2665 .product_name = "Play'n Roll", 1987 2666 .ifnum = 0, ··· 1993 2678 /* Novation EMS devices */ 1994 2679 { 1995 2680 USB_DEVICE_VENDOR_SPEC(0x1235, 0x0001), 1996 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2681 + QUIRK_DRIVER_INFO { 1997 2682 .vendor_name = "Novation", 1998 2683 .product_name = "ReMOTE Audio/XStation", 1999 2684 .ifnum = 4, ··· 2002 2687 }, 2003 2688 { 2004 2689 USB_DEVICE_VENDOR_SPEC(0x1235, 0x0002), 2005 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2690 + QUIRK_DRIVER_INFO { 2006 2691 .vendor_name = "Novation", 2007 2692 .product_name = "Speedio", 2008 2693 .ifnum = 3, ··· 2011 2696 }, 2012 2697 { 2013 2698 USB_DEVICE(0x1235, 0x000a), 2014 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2699 + QUIRK_DRIVER_INFO { 2015 2700 /* .vendor_name = "Novation", */ 2016 2701 /* .product_name = "Nocturn", */ 2017 - .ifnum = 0, 2018 - .type = QUIRK_MIDI_RAW_BYTES 2702 + QUIRK_DATA_RAW_BYTES(0) 2019 2703 } 2020 2704 }, 2021 2705 { 2022 2706 USB_DEVICE(0x1235, 0x000e), 2023 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2707 + QUIRK_DRIVER_INFO { 2024 2708 /* .vendor_name = "Novation", */ 2025 2709 /* .product_name = "Launchpad", */ 2026 - .ifnum = 0, 2027 - .type = QUIRK_MIDI_RAW_BYTES 2710 + QUIRK_DATA_RAW_BYTES(0) 2028 2711 } 2029 2712 }, 2030 2713 { 2031 2714 USB_DEVICE(0x1235, 0x0010), 2032 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2715 + QUIRK_DRIVER_INFO { 2033 2716 .vendor_name = "Focusrite", 2034 2717 .product_name = "Saffire 6 USB", 2035 - .ifnum = QUIRK_ANY_INTERFACE, 2036 - .type = QUIRK_COMPOSITE, 2037 - .data = (const struct snd_usb_audio_quirk[]) { 2718 + QUIRK_DATA_COMPOSITE { 2719 + { QUIRK_DATA_STANDARD_MIXER(0) }, 2038 2720 { 2039 - .ifnum = 0, 2040 - .type = QUIRK_AUDIO_STANDARD_MIXER, 2041 - }, 2042 - { 2043 - .ifnum = 0, 2044 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2045 - .data = &(const struct audioformat) { 2721 + QUIRK_DATA_AUDIOFORMAT(0) { 2046 2722 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2047 2723 .channels = 4, 2048 2724 .iface = 0, ··· 2060 2754 } 2061 2755 }, 2062 2756 { 2063 - .ifnum = 0, 2064 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2065 - .data = &(const struct audioformat) { 2757 + QUIRK_DATA_AUDIOFORMAT(0) { 2066 2758 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2067 2759 .channels = 2, 2068 2760 .iface = 0, ··· 2082 2778 } 2083 2779 } 2084 2780 }, 2085 - { 2086 - .ifnum = 1, 2087 - .type = QUIRK_MIDI_RAW_BYTES 2088 - }, 2089 - { 2090 - .ifnum = -1 2091 - } 2781 + { QUIRK_DATA_RAW_BYTES(1) }, 2782 + QUIRK_COMPOSITE_END 2092 2783 } 2093 2784 } 2094 2785 }, 2095 2786 { 2096 2787 USB_DEVICE(0x1235, 0x0018), 2097 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2788 + QUIRK_DRIVER_INFO { 2098 2789 .vendor_name = "Novation", 2099 2790 .product_name = "Twitch", 2100 - .ifnum = QUIRK_ANY_INTERFACE, 2101 - .type = QUIRK_COMPOSITE, 2102 - .data = (const struct snd_usb_audio_quirk[]) { 2791 + QUIRK_DATA_COMPOSITE { 2103 2792 { 2104 - .ifnum = 0, 2105 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2106 - .data = & (const struct audioformat) { 2793 + QUIRK_DATA_AUDIOFORMAT(0) { 2107 2794 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2108 2795 .channels = 4, 2109 2796 .iface = 0, ··· 2113 2818 } 2114 2819 } 2115 2820 }, 2116 - { 2117 - .ifnum = 1, 2118 - .type = QUIRK_MIDI_RAW_BYTES 2119 - }, 2120 - { 2121 - .ifnum = -1 2122 - } 2821 + { QUIRK_DATA_RAW_BYTES(1) }, 2822 + QUIRK_COMPOSITE_END 2123 2823 } 2124 2824 } 2125 2825 }, 2126 2826 { 2127 2827 USB_DEVICE_VENDOR_SPEC(0x1235, 0x4661), 2128 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2828 + QUIRK_DRIVER_INFO { 2129 2829 .vendor_name = "Novation", 2130 2830 .product_name = "ReMOTE25", 2131 2831 .ifnum = 0, ··· 2132 2842 { 2133 2843 /* VirusTI Desktop */ 2134 2844 USB_DEVICE_VENDOR_SPEC(0x133e, 0x0815), 2135 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2136 - .ifnum = QUIRK_ANY_INTERFACE, 2137 - .type = QUIRK_COMPOSITE, 2138 - .data = &(const struct snd_usb_audio_quirk[]) { 2845 + QUIRK_DRIVER_INFO { 2846 + QUIRK_DATA_COMPOSITE { 2139 2847 { 2140 - .ifnum = 3, 2141 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 2142 - .data = &(const struct snd_usb_midi_endpoint_info) { 2848 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(3) { 2143 2849 .out_cables = 0x0003, 2144 2850 .in_cables = 0x0003 2145 2851 } 2146 2852 }, 2147 - { 2148 - .ifnum = 4, 2149 - .type = QUIRK_IGNORE_INTERFACE 2150 - }, 2151 - { 2152 - .ifnum = -1 2153 - } 2853 + { QUIRK_DATA_IGNORE(4) }, 2854 + QUIRK_COMPOSITE_END 2154 2855 } 2155 2856 } 2156 2857 }, ··· 2169 2888 /* QinHeng devices */ 2170 2889 { 2171 2890 USB_DEVICE(0x1a86, 0x752d), 2172 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2891 + QUIRK_DRIVER_INFO { 2173 2892 .vendor_name = "QinHeng", 2174 2893 .product_name = "CH345", 2175 2894 .ifnum = 1, ··· 2183 2902 /* Miditech devices */ 2184 2903 { 2185 2904 USB_DEVICE(0x4752, 0x0011), 2186 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2905 + QUIRK_DRIVER_INFO { 2187 2906 .vendor_name = "Miditech", 2188 2907 .product_name = "Midistart-2", 2189 2908 .ifnum = 0, ··· 2195 2914 { 2196 2915 /* this ID used by both Miditech MidiStudio-2 and CME UF-x */ 2197 2916 USB_DEVICE(0x7104, 0x2202), 2198 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2917 + QUIRK_DRIVER_INFO { 2199 2918 .ifnum = 0, 2200 2919 .type = QUIRK_MIDI_CME 2201 2920 } ··· 2205 2924 { 2206 2925 /* Thanks to Clemens Ladisch <clemens@ladisch.de> */ 2207 2926 USB_DEVICE(0x0dba, 0x1000), 2208 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2927 + QUIRK_DRIVER_INFO { 2209 2928 .vendor_name = "Digidesign", 2210 2929 .product_name = "MBox", 2211 - .ifnum = QUIRK_ANY_INTERFACE, 2212 - .type = QUIRK_COMPOSITE, 2213 - .data = (const struct snd_usb_audio_quirk[]){ 2930 + QUIRK_DATA_COMPOSITE{ 2931 + { QUIRK_DATA_STANDARD_MIXER(0) }, 2214 2932 { 2215 - .ifnum = 0, 2216 - .type = QUIRK_AUDIO_STANDARD_MIXER, 2217 - }, 2218 - { 2219 - .ifnum = 1, 2220 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2221 - .data = &(const struct audioformat) { 2933 + QUIRK_DATA_AUDIOFORMAT(1) { 2222 2934 .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2223 2935 .channels = 2, 2224 2936 .iface = 1, ··· 2232 2958 } 2233 2959 }, 2234 2960 { 2235 - .ifnum = 1, 2236 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2237 - .data = &(const struct audioformat) { 2961 + QUIRK_DATA_AUDIOFORMAT(1) { 2238 2962 .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2239 2963 .channels = 2, 2240 2964 .iface = 1, ··· 2253 2981 } 2254 2982 } 2255 2983 }, 2256 - { 2257 - .ifnum = -1 2258 - } 2984 + QUIRK_COMPOSITE_END 2259 2985 } 2260 2986 } 2261 2987 }, ··· 2261 2991 /* DIGIDESIGN MBOX 2 */ 2262 2992 { 2263 2993 USB_DEVICE(0x0dba, 0x3000), 2264 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2994 + QUIRK_DRIVER_INFO { 2265 2995 .vendor_name = "Digidesign", 2266 2996 .product_name = "Mbox 2", 2267 - .ifnum = QUIRK_ANY_INTERFACE, 2268 - .type = QUIRK_COMPOSITE, 2269 - .data = (const struct snd_usb_audio_quirk[]) { 2997 + QUIRK_DATA_COMPOSITE { 2998 + { QUIRK_DATA_IGNORE(0) }, 2999 + { QUIRK_DATA_IGNORE(1) }, 2270 3000 { 2271 - .ifnum = 0, 2272 - .type = QUIRK_IGNORE_INTERFACE 2273 - }, 2274 - { 2275 - .ifnum = 1, 2276 - .type = QUIRK_IGNORE_INTERFACE 2277 - }, 2278 - { 2279 - .ifnum = 2, 2280 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2281 - .data = &(const struct audioformat) { 3001 + QUIRK_DATA_AUDIOFORMAT(2) { 2282 3002 .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2283 3003 .channels = 2, 2284 3004 .iface = 2, ··· 2286 3026 } 2287 3027 } 2288 3028 }, 3029 + { QUIRK_DATA_IGNORE(3) }, 2289 3030 { 2290 - .ifnum = 3, 2291 - .type = QUIRK_IGNORE_INTERFACE 2292 - }, 2293 - { 2294 - .ifnum = 4, 2295 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2296 - .data = &(const struct audioformat) { 2297 - .formats = SNDRV_PCM_FMTBIT_S24_3BE, 3031 + QUIRK_DATA_AUDIOFORMAT(4) { 3032 + .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2298 3033 .channels = 2, 2299 3034 .iface = 4, 2300 3035 .altsetting = 2, ··· 2306 3051 } 2307 3052 } 2308 3053 }, 3054 + { QUIRK_DATA_IGNORE(5) }, 2309 3055 { 2310 - .ifnum = 5, 2311 - .type = QUIRK_IGNORE_INTERFACE 2312 - }, 2313 - { 2314 - .ifnum = 6, 2315 - .type = QUIRK_MIDI_MIDIMAN, 2316 - .data = &(const struct snd_usb_midi_endpoint_info) { 3056 + QUIRK_DATA_MIDI_MIDIMAN(6) { 2317 3057 .out_ep = 0x02, 2318 3058 .out_cables = 0x0001, 2319 3059 .in_ep = 0x81, ··· 2316 3066 .in_cables = 0x0001 2317 3067 } 2318 3068 }, 2319 - { 2320 - .ifnum = -1 2321 - } 3069 + QUIRK_COMPOSITE_END 2322 3070 } 2323 3071 } 2324 3072 }, 2325 3073 /* DIGIDESIGN MBOX 3 */ 2326 3074 { 2327 3075 USB_DEVICE(0x0dba, 0x5000), 2328 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3076 + QUIRK_DRIVER_INFO { 2329 3077 .vendor_name = "Digidesign", 2330 3078 .product_name = "Mbox 3", 2331 - .ifnum = QUIRK_ANY_INTERFACE, 2332 - .type = QUIRK_COMPOSITE, 2333 - .data = (const struct snd_usb_audio_quirk[]) { 3079 + QUIRK_DATA_COMPOSITE { 3080 + { QUIRK_DATA_IGNORE(0) }, 3081 + { QUIRK_DATA_IGNORE(1) }, 2334 3082 { 2335 - .ifnum = 0, 2336 - .type = QUIRK_IGNORE_INTERFACE 2337 - }, 2338 - { 2339 - .ifnum = 1, 2340 - .type = QUIRK_IGNORE_INTERFACE 2341 - }, 2342 - { 2343 - .ifnum = 2, 2344 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2345 - .data = &(const struct audioformat) { 3083 + QUIRK_DATA_AUDIOFORMAT(2) { 2346 3084 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2347 3085 .fmt_bits = 24, 2348 3086 .channels = 4, ··· 2357 3119 } 2358 3120 }, 2359 3121 { 2360 - .ifnum = 3, 2361 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2362 - .data = &(const struct audioformat) { 3122 + QUIRK_DATA_AUDIOFORMAT(3) { 2363 3123 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2364 3124 .fmt_bits = 24, 2365 3125 .channels = 4, ··· 2381 3145 } 2382 3146 }, 2383 3147 { 2384 - .ifnum = 4, 2385 - .type = QUIRK_MIDI_FIXED_ENDPOINT, 2386 - .data = &(const struct snd_usb_midi_endpoint_info) { 3148 + QUIRK_DATA_MIDI_FIXED_ENDPOINT(4) { 2387 3149 .out_cables = 0x0001, 2388 3150 .in_cables = 0x0001 2389 3151 } 2390 3152 }, 2391 - { 2392 - .ifnum = -1 2393 - } 3153 + QUIRK_COMPOSITE_END 2394 3154 } 2395 3155 } 2396 3156 }, 2397 3157 { 2398 3158 /* Tascam US122 MKII - playback-only support */ 2399 3159 USB_DEVICE_VENDOR_SPEC(0x0644, 0x8021), 2400 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3160 + QUIRK_DRIVER_INFO { 2401 3161 .vendor_name = "TASCAM", 2402 3162 .product_name = "US122 MKII", 2403 - .ifnum = QUIRK_ANY_INTERFACE, 2404 - .type = QUIRK_COMPOSITE, 2405 - .data = (const struct snd_usb_audio_quirk[]) { 3163 + QUIRK_DATA_COMPOSITE { 3164 + { QUIRK_DATA_IGNORE(0) }, 2406 3165 { 2407 - .ifnum = 0, 2408 - .type = QUIRK_IGNORE_INTERFACE 2409 - }, 2410 - { 2411 - .ifnum = 1, 2412 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2413 - .data = &(const struct audioformat) { 3166 + QUIRK_DATA_AUDIOFORMAT(1) { 2414 3167 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2415 3168 .channels = 2, 2416 3169 .iface = 1, ··· 2420 3195 } 2421 3196 } 2422 3197 }, 2423 - { 2424 - .ifnum = -1 2425 - } 3198 + QUIRK_COMPOSITE_END 2426 3199 } 2427 3200 } 2428 3201 }, ··· 2428 3205 /* Denon DN-X1600 */ 2429 3206 { 2430 3207 USB_AUDIO_DEVICE(0x154e, 0x500e), 2431 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3208 + QUIRK_DRIVER_INFO { 2432 3209 .vendor_name = "Denon", 2433 3210 .product_name = "DN-X1600", 2434 - .ifnum = QUIRK_ANY_INTERFACE, 2435 - .type = QUIRK_COMPOSITE, 2436 - .data = (const struct snd_usb_audio_quirk[]){ 3211 + QUIRK_DATA_COMPOSITE{ 3212 + { QUIRK_DATA_IGNORE(0) }, 2437 3213 { 2438 - .ifnum = 0, 2439 - .type = QUIRK_IGNORE_INTERFACE, 2440 - }, 2441 - { 2442 - .ifnum = 1, 2443 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2444 - .data = &(const struct audioformat) { 3214 + QUIRK_DATA_AUDIOFORMAT(1) { 2445 3215 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2446 3216 .channels = 8, 2447 3217 .iface = 1, ··· 2455 3239 } 2456 3240 }, 2457 3241 { 2458 - .ifnum = 2, 2459 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2460 - .data = &(const struct audioformat) { 3242 + QUIRK_DATA_AUDIOFORMAT(2) { 2461 3243 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2462 3244 .channels = 8, 2463 3245 .iface = 2, ··· 2475 3261 } 2476 3262 } 2477 3263 }, 2478 - { 2479 - .ifnum = 4, 2480 - .type = QUIRK_MIDI_STANDARD_INTERFACE, 2481 - }, 2482 - { 2483 - .ifnum = -1 2484 - } 3264 + { QUIRK_DATA_STANDARD_MIDI(4) }, 3265 + QUIRK_COMPOSITE_END 2485 3266 } 2486 3267 } 2487 3268 }, ··· 2485 3276 { 2486 3277 USB_DEVICE(0x045e, 0x0283), 2487 3278 .bInterfaceClass = USB_CLASS_PER_INTERFACE, 2488 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3279 + QUIRK_DRIVER_INFO { 2489 3280 .vendor_name = "Microsoft", 2490 3281 .product_name = "XboxLive Headset/Xbox Communicator", 2491 - .ifnum = QUIRK_ANY_INTERFACE, 2492 - .type = QUIRK_COMPOSITE, 2493 - .data = &(const struct snd_usb_audio_quirk[]) { 3282 + QUIRK_DATA_COMPOSITE { 2494 3283 { 2495 3284 /* playback */ 2496 - .ifnum = 0, 2497 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2498 - .data = &(const struct audioformat) { 3285 + QUIRK_DATA_AUDIOFORMAT(0) { 2499 3286 .formats = SNDRV_PCM_FMTBIT_S16_LE, 2500 3287 .channels = 1, 2501 3288 .iface = 0, ··· 2507 3302 }, 2508 3303 { 2509 3304 /* capture */ 2510 - .ifnum = 1, 2511 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2512 - .data = &(const struct audioformat) { 3305 + QUIRK_DATA_AUDIOFORMAT(1) { 2513 3306 .formats = SNDRV_PCM_FMTBIT_S16_LE, 2514 3307 .channels = 1, 2515 3308 .iface = 1, ··· 2521 3318 .rate_max = 16000 2522 3319 } 2523 3320 }, 2524 - { 2525 - .ifnum = -1 2526 - } 3321 + QUIRK_COMPOSITE_END 2527 3322 } 2528 3323 } 2529 3324 }, ··· 2530 3329 { 2531 3330 USB_DEVICE(0x200c, 0x100b), 2532 3331 .bInterfaceClass = USB_CLASS_PER_INTERFACE, 2533 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2534 - .ifnum = QUIRK_ANY_INTERFACE, 2535 - .type = QUIRK_COMPOSITE, 2536 - .data = &(const struct snd_usb_audio_quirk[]) { 3332 + QUIRK_DRIVER_INFO { 3333 + QUIRK_DATA_COMPOSITE { 3334 + { QUIRK_DATA_STANDARD_MIXER(0) }, 2537 3335 { 2538 - .ifnum = 0, 2539 - .type = QUIRK_AUDIO_STANDARD_MIXER, 2540 - }, 2541 - { 2542 - .ifnum = 1, 2543 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2544 - .data = &(const struct audioformat) { 3336 + QUIRK_DATA_AUDIOFORMAT(1) { 2545 3337 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2546 3338 .channels = 4, 2547 3339 .iface = 1, ··· 2553 3359 } 2554 3360 } 2555 3361 }, 2556 - { 2557 - .ifnum = -1 2558 - } 3362 + QUIRK_COMPOSITE_END 2559 3363 } 2560 3364 } 2561 3365 }, ··· 2566 3374 * enabled in create_standard_audio_quirk(). 2567 3375 */ 2568 3376 USB_DEVICE(0x1686, 0x00dd), 2569 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2570 - .ifnum = QUIRK_ANY_INTERFACE, 2571 - .type = QUIRK_COMPOSITE, 2572 - .data = (const struct snd_usb_audio_quirk[]) { 2573 - { 2574 - /* Playback */ 2575 - .ifnum = 1, 2576 - .type = QUIRK_AUDIO_STANDARD_INTERFACE, 2577 - }, 2578 - { 2579 - /* Capture */ 2580 - .ifnum = 2, 2581 - .type = QUIRK_AUDIO_STANDARD_INTERFACE, 2582 - }, 2583 - { 2584 - /* Midi */ 2585 - .ifnum = 3, 2586 - .type = QUIRK_MIDI_STANDARD_INTERFACE 2587 - }, 2588 - { 2589 - .ifnum = -1 2590 - }, 3377 + QUIRK_DRIVER_INFO { 3378 + QUIRK_DATA_COMPOSITE { 3379 + { QUIRK_DATA_STANDARD_AUDIO(1) }, /* Playback */ 3380 + { QUIRK_DATA_STANDARD_AUDIO(2) }, /* Capture */ 3381 + { QUIRK_DATA_STANDARD_MIDI(3) }, /* Midi */ 3382 + QUIRK_COMPOSITE_END 2591 3383 } 2592 3384 } 2593 3385 }, ··· 2585 3409 USB_DEVICE_ID_MATCH_INT_SUBCLASS, 2586 3410 .bInterfaceClass = USB_CLASS_AUDIO, 2587 3411 .bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING, 2588 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2589 - .ifnum = QUIRK_ANY_INTERFACE, 2590 - .type = QUIRK_MIDI_STANDARD_INTERFACE 3412 + QUIRK_DRIVER_INFO { 3413 + QUIRK_DATA_STANDARD_MIDI(QUIRK_ANY_INTERFACE) 2591 3414 } 2592 3415 }, 2593 3416 2594 3417 /* Rane SL-1 */ 2595 3418 { 2596 3419 USB_DEVICE(0x13e5, 0x0001), 2597 - .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 2598 - .ifnum = QUIRK_ANY_INTERFACE, 2599 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3420 + QUIRK_DRIVER_INFO { 3421 + QUIRK_DATA_STANDARD_AUDIO(QUIRK_ANY_INTERFACE) 2600 3422 } 2601 3423 }, 2602 3424 ··· 2610 3436 * and only the 48 kHz sample rate works for the playback interface. 2611 3437 */ 2612 3438 USB_DEVICE(0x0a12, 0x1243), 2613 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2614 - .ifnum = QUIRK_ANY_INTERFACE, 2615 - .type = QUIRK_COMPOSITE, 2616 - .data = (const struct snd_usb_audio_quirk[]) { 2617 - { 2618 - .ifnum = 0, 2619 - .type = QUIRK_AUDIO_STANDARD_MIXER, 2620 - }, 2621 - /* Capture */ 2622 - { 2623 - .ifnum = 1, 2624 - .type = QUIRK_IGNORE_INTERFACE, 2625 - }, 3439 + QUIRK_DRIVER_INFO { 3440 + QUIRK_DATA_COMPOSITE { 3441 + { QUIRK_DATA_STANDARD_MIXER(0) }, 3442 + { QUIRK_DATA_IGNORE(1) }, /* Capture */ 2626 3443 /* Playback */ 2627 3444 { 2628 - .ifnum = 2, 2629 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2630 - .data = &(const struct audioformat) { 3445 + QUIRK_DATA_AUDIOFORMAT(2) { 2631 3446 .formats = SNDRV_PCM_FMTBIT_S16_LE, 2632 3447 .channels = 2, 2633 3448 .iface = 2, ··· 2635 3472 } 2636 3473 } 2637 3474 }, 2638 - { 2639 - .ifnum = -1 2640 - }, 3475 + QUIRK_COMPOSITE_END 2641 3476 } 2642 3477 } 2643 3478 }, ··· 2648 3487 * even on windows. 2649 3488 */ 2650 3489 USB_DEVICE(0x19b5, 0x0021), 2651 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2652 - .ifnum = QUIRK_ANY_INTERFACE, 2653 - .type = QUIRK_COMPOSITE, 2654 - .data = (const struct snd_usb_audio_quirk[]) { 2655 - { 2656 - .ifnum = 0, 2657 - .type = QUIRK_AUDIO_STANDARD_MIXER, 2658 - }, 3490 + QUIRK_DRIVER_INFO { 3491 + QUIRK_DATA_COMPOSITE { 3492 + { QUIRK_DATA_STANDARD_MIXER(0) }, 2659 3493 /* Playback */ 2660 3494 { 2661 - .ifnum = 1, 2662 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2663 - .data = &(const struct audioformat) { 3495 + QUIRK_DATA_AUDIOFORMAT(1) { 2664 3496 .formats = SNDRV_PCM_FMTBIT_S16_LE, 2665 3497 .channels = 2, 2666 3498 .iface = 1, ··· 2672 3518 } 2673 3519 } 2674 3520 }, 2675 - { 2676 - .ifnum = -1 2677 - }, 3521 + QUIRK_COMPOSITE_END 2678 3522 } 2679 3523 } 2680 3524 }, 2681 3525 /* MOTU Microbook II */ 2682 3526 { 2683 3527 USB_DEVICE_VENDOR_SPEC(0x07fd, 0x0004), 2684 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3528 + QUIRK_DRIVER_INFO { 2685 3529 .vendor_name = "MOTU", 2686 3530 .product_name = "MicroBookII", 2687 - .ifnum = QUIRK_ANY_INTERFACE, 2688 - .type = QUIRK_COMPOSITE, 2689 - .data = (const struct snd_usb_audio_quirk[]) { 3531 + QUIRK_DATA_COMPOSITE { 3532 + { QUIRK_DATA_STANDARD_MIXER(0) }, 2690 3533 { 2691 - .ifnum = 0, 2692 - .type = QUIRK_AUDIO_STANDARD_MIXER, 2693 - }, 2694 - { 2695 - .ifnum = 0, 2696 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2697 - .data = &(const struct audioformat) { 3534 + QUIRK_DATA_AUDIOFORMAT(0) { 2698 3535 .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2699 3536 .channels = 6, 2700 3537 .iface = 0, ··· 2706 3561 } 2707 3562 }, 2708 3563 { 2709 - .ifnum = 0, 2710 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2711 - .data = &(const struct audioformat) { 3564 + QUIRK_DATA_AUDIOFORMAT(0) { 2712 3565 .formats = SNDRV_PCM_FMTBIT_S24_3BE, 2713 3566 .channels = 8, 2714 3567 .iface = 0, ··· 2727 3584 } 2728 3585 } 2729 3586 }, 2730 - { 2731 - .ifnum = -1 2732 - } 3587 + QUIRK_COMPOSITE_END 2733 3588 } 2734 3589 } 2735 3590 }, ··· 2739 3598 * The feedback for the output is the input. 2740 3599 */ 2741 3600 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0023), 2742 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2743 - .ifnum = QUIRK_ANY_INTERFACE, 2744 - .type = QUIRK_COMPOSITE, 2745 - .data = (const struct snd_usb_audio_quirk[]) { 3601 + QUIRK_DRIVER_INFO { 3602 + QUIRK_DATA_COMPOSITE { 2746 3603 { 2747 - .ifnum = 0, 2748 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2749 - .data = &(const struct audioformat) { 3604 + QUIRK_DATA_AUDIOFORMAT(0) { 2750 3605 .formats = SNDRV_PCM_FMTBIT_S32_LE, 2751 3606 .channels = 12, 2752 3607 .iface = 0, ··· 2759 3622 } 2760 3623 }, 2761 3624 { 2762 - .ifnum = 0, 2763 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2764 - .data = &(const struct audioformat) { 3625 + QUIRK_DATA_AUDIOFORMAT(0) { 2765 3626 .formats = SNDRV_PCM_FMTBIT_S32_LE, 2766 3627 .channels = 10, 2767 3628 .iface = 0, ··· 2777 3642 .rate_table = (unsigned int[]) { 44100 } 2778 3643 } 2779 3644 }, 2780 - { 2781 - .ifnum = -1 2782 - } 3645 + QUIRK_COMPOSITE_END 2783 3646 } 2784 3647 } 2785 3648 }, ··· 2820 3687 * but not for DVS (Digital Vinyl Systems) like in Mixxx. 2821 3688 */ 2822 3689 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017), 2823 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2824 - .ifnum = QUIRK_ANY_INTERFACE, 2825 - .type = QUIRK_COMPOSITE, 2826 - .data = (const struct snd_usb_audio_quirk[]) { 3690 + QUIRK_DRIVER_INFO { 3691 + QUIRK_DATA_COMPOSITE { 2827 3692 { 2828 - .ifnum = 0, 2829 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2830 - .data = &(const struct audioformat) { 3693 + QUIRK_DATA_AUDIOFORMAT(0) { 2831 3694 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2832 3695 .channels = 8, // outputs 2833 3696 .iface = 0, ··· 2840 3711 } 2841 3712 }, 2842 3713 { 2843 - .ifnum = 0, 2844 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2845 - .data = &(const struct audioformat) { 3714 + QUIRK_DATA_AUDIOFORMAT(0) { 2846 3715 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2847 3716 .channels = 8, // inputs 2848 3717 .iface = 0, ··· 2858 3731 .rate_table = (unsigned int[]) { 48000 } 2859 3732 } 2860 3733 }, 2861 - { 2862 - .ifnum = -1 2863 - } 3734 + QUIRK_COMPOSITE_END 2864 3735 } 2865 3736 } 2866 3737 }, ··· 2869 3744 * The feedback for the output is the dummy input. 2870 3745 */ 2871 3746 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000e), 2872 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2873 - .ifnum = QUIRK_ANY_INTERFACE, 2874 - .type = QUIRK_COMPOSITE, 2875 - .data = (const struct snd_usb_audio_quirk[]) { 3747 + QUIRK_DRIVER_INFO { 3748 + QUIRK_DATA_COMPOSITE { 2876 3749 { 2877 - .ifnum = 0, 2878 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2879 - .data = &(const struct audioformat) { 3750 + QUIRK_DATA_AUDIOFORMAT(0) { 2880 3751 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2881 3752 .channels = 4, 2882 3753 .iface = 0, ··· 2889 3768 } 2890 3769 }, 2891 3770 { 2892 - .ifnum = 0, 2893 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2894 - .data = &(const struct audioformat) { 3771 + QUIRK_DATA_AUDIOFORMAT(0) { 2895 3772 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2896 3773 .channels = 2, 2897 3774 .iface = 0, ··· 2907 3788 .rate_table = (unsigned int[]) { 44100 } 2908 3789 } 2909 3790 }, 2910 - { 2911 - .ifnum = -1 2912 - } 3791 + QUIRK_COMPOSITE_END 2913 3792 } 2914 3793 } 2915 3794 }, ··· 2918 3801 * PCM is 6 channels out & 4 channels in @ 44.1 fixed 2919 3802 */ 2920 3803 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000d), 2921 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2922 - .ifnum = QUIRK_ANY_INTERFACE, 2923 - .type = QUIRK_COMPOSITE, 2924 - .data = (const struct snd_usb_audio_quirk[]) { 3804 + QUIRK_DRIVER_INFO { 3805 + QUIRK_DATA_COMPOSITE { 2925 3806 { 2926 - .ifnum = 0, 2927 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2928 - .data = &(const struct audioformat) { 3807 + QUIRK_DATA_AUDIOFORMAT(0) { 2929 3808 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2930 3809 .channels = 6, //Master, Headphones & Booth 2931 3810 .iface = 0, ··· 2938 3825 } 2939 3826 }, 2940 3827 { 2941 - .ifnum = 0, 2942 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2943 - .data = &(const struct audioformat) { 3828 + QUIRK_DATA_AUDIOFORMAT(0) { 2944 3829 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2945 3830 .channels = 4, //2x RCA inputs (CH1 & CH2) 2946 3831 .iface = 0, ··· 2956 3845 .rate_table = (unsigned int[]) { 44100 } 2957 3846 } 2958 3847 }, 2959 - { 2960 - .ifnum = -1 2961 - } 3848 + QUIRK_COMPOSITE_END 2962 3849 } 2963 3850 } 2964 3851 }, ··· 2968 3859 * The Feedback for the output is the input 2969 3860 */ 2970 3861 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001e), 2971 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 2972 - .ifnum = QUIRK_ANY_INTERFACE, 2973 - .type = QUIRK_COMPOSITE, 2974 - .data = (const struct snd_usb_audio_quirk[]) { 3862 + QUIRK_DRIVER_INFO { 3863 + QUIRK_DATA_COMPOSITE { 2975 3864 { 2976 - .ifnum = 0, 2977 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2978 - .data = &(const struct audioformat) { 3865 + QUIRK_DATA_AUDIOFORMAT(0) { 2979 3866 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2980 3867 .channels = 4, 2981 3868 .iface = 0, ··· 2988 3883 } 2989 3884 }, 2990 3885 { 2991 - .ifnum = 0, 2992 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 2993 - .data = &(const struct audioformat) { 3886 + QUIRK_DATA_AUDIOFORMAT(0) { 2994 3887 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 2995 3888 .channels = 6, 2996 3889 .iface = 0, ··· 3006 3903 .rate_table = (unsigned int[]) { 44100 } 3007 3904 } 3008 3905 }, 3009 - { 3010 - .ifnum = -1 3011 - } 3906 + QUIRK_COMPOSITE_END 3012 3907 } 3013 3908 } 3014 3909 }, ··· 3017 3916 * 10 channels playback & 12 channels capture @ 44.1/48/96kHz S24LE 3018 3917 */ 3019 3918 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x000a), 3020 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3021 - .ifnum = QUIRK_ANY_INTERFACE, 3022 - .type = QUIRK_COMPOSITE, 3023 - .data = (const struct snd_usb_audio_quirk[]) { 3919 + QUIRK_DRIVER_INFO { 3920 + QUIRK_DATA_COMPOSITE { 3024 3921 { 3025 - .ifnum = 0, 3026 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3027 - .data = &(const struct audioformat) { 3922 + QUIRK_DATA_AUDIOFORMAT(0) { 3028 3923 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3029 3924 .channels = 10, 3030 3925 .iface = 0, ··· 3041 3944 } 3042 3945 }, 3043 3946 { 3044 - .ifnum = 0, 3045 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3046 - .data = &(const struct audioformat) { 3947 + QUIRK_DATA_AUDIOFORMAT(0) { 3047 3948 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3048 3949 .channels = 12, 3049 3950 .iface = 0, ··· 3063 3968 } 3064 3969 } 3065 3970 }, 3066 - { 3067 - .ifnum = -1 3068 - } 3971 + QUIRK_COMPOSITE_END 3069 3972 } 3070 3973 } 3071 3974 }, ··· 3075 3982 * The Feedback for the output is the input 3076 3983 */ 3077 3984 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029), 3078 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3079 - .ifnum = QUIRK_ANY_INTERFACE, 3080 - .type = QUIRK_COMPOSITE, 3081 - .data = (const struct snd_usb_audio_quirk[]) { 3985 + QUIRK_DRIVER_INFO { 3986 + QUIRK_DATA_COMPOSITE { 3082 3987 { 3083 - .ifnum = 0, 3084 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3085 - .data = &(const struct audioformat) { 3988 + QUIRK_DATA_AUDIOFORMAT(0) { 3086 3989 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3087 3990 .channels = 6, 3088 3991 .iface = 0, ··· 3095 4006 } 3096 4007 }, 3097 4008 { 3098 - .ifnum = 0, 3099 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3100 - .data = &(const struct audioformat) { 4009 + QUIRK_DATA_AUDIOFORMAT(0) { 3101 4010 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3102 4011 .channels = 6, 3103 4012 .iface = 0, ··· 3113 4026 .rate_table = (unsigned int[]) { 44100 } 3114 4027 } 3115 4028 }, 3116 - { 3117 - .ifnum = -1 3118 - } 4029 + QUIRK_COMPOSITE_END 3119 4030 } 3120 4031 } 3121 4032 }, ··· 3131 4046 */ 3132 4047 { 3133 4048 USB_AUDIO_DEVICE(0x534d, 0x0021), 3134 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 4049 + QUIRK_DRIVER_INFO { 3135 4050 .vendor_name = "MacroSilicon", 3136 4051 .product_name = "MS210x", 3137 - .ifnum = QUIRK_ANY_INTERFACE, 3138 - .type = QUIRK_COMPOSITE, 3139 - .data = &(const struct snd_usb_audio_quirk[]) { 4052 + QUIRK_DATA_COMPOSITE { 4053 + { QUIRK_DATA_STANDARD_MIXER(2) }, 3140 4054 { 3141 - .ifnum = 2, 3142 - .type = QUIRK_AUDIO_STANDARD_MIXER, 3143 - }, 3144 - { 3145 - .ifnum = 3, 3146 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3147 - .data = &(const struct audioformat) { 4055 + QUIRK_DATA_AUDIOFORMAT(3) { 3148 4056 .formats = SNDRV_PCM_FMTBIT_S16_LE, 3149 4057 .channels = 2, 3150 4058 .iface = 3, ··· 3152 4074 .rate_max = 48000, 3153 4075 } 3154 4076 }, 3155 - { 3156 - .ifnum = -1 3157 - } 4077 + QUIRK_COMPOSITE_END 3158 4078 } 3159 4079 } 3160 4080 }, ··· 3170 4094 */ 3171 4095 { 3172 4096 USB_AUDIO_DEVICE(0x534d, 0x2109), 3173 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 4097 + QUIRK_DRIVER_INFO { 3174 4098 .vendor_name = "MacroSilicon", 3175 4099 .product_name = "MS2109", 3176 - .ifnum = QUIRK_ANY_INTERFACE, 3177 - .type = QUIRK_COMPOSITE, 3178 - .data = &(const struct snd_usb_audio_quirk[]) { 4100 + QUIRK_DATA_COMPOSITE { 4101 + { QUIRK_DATA_STANDARD_MIXER(2) }, 3179 4102 { 3180 - .ifnum = 2, 3181 - .type = QUIRK_AUDIO_STANDARD_MIXER, 3182 - }, 3183 - { 3184 - .ifnum = 3, 3185 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3186 - .data = &(const struct audioformat) { 4103 + QUIRK_DATA_AUDIOFORMAT(3) { 3187 4104 .formats = SNDRV_PCM_FMTBIT_S16_LE, 3188 4105 .channels = 2, 3189 4106 .iface = 3, ··· 3191 4122 .rate_max = 48000, 3192 4123 } 3193 4124 }, 3194 - { 3195 - .ifnum = -1 3196 - } 4125 + QUIRK_COMPOSITE_END 3197 4126 } 3198 4127 } 3199 4128 }, ··· 3201 4134 * 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE 3202 4135 */ 3203 4136 USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f), 3204 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3205 - .ifnum = QUIRK_ANY_INTERFACE, 3206 - .type = QUIRK_COMPOSITE, 3207 - .data = (const struct snd_usb_audio_quirk[]) { 4137 + QUIRK_DRIVER_INFO { 4138 + QUIRK_DATA_COMPOSITE { 3208 4139 { 3209 - .ifnum = 0, 3210 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3211 - .data = &(const struct audioformat) { 4140 + QUIRK_DATA_AUDIOFORMAT(0) { 3212 4141 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3213 4142 .channels = 8, 3214 4143 .iface = 0, ··· 3223 4160 } 3224 4161 }, 3225 4162 { 3226 - .ifnum = 0, 3227 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3228 - .data = &(const struct audioformat) { 4163 + QUIRK_DATA_AUDIOFORMAT(0) { 3229 4164 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3230 4165 .channels = 8, 3231 4166 .iface = 0, ··· 3243 4182 .rate_table = (unsigned int[]) { 44100, 48000, 96000 } 3244 4183 } 3245 4184 }, 3246 - { 3247 - .ifnum = -1 3248 - } 4185 + QUIRK_COMPOSITE_END 3249 4186 } 3250 4187 } 3251 4188 }, ··· 3253 4194 * 10 channels playback & 12 channels capture @ 48kHz S24LE 3254 4195 */ 3255 4196 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b), 3256 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3257 - .ifnum = QUIRK_ANY_INTERFACE, 3258 - .type = QUIRK_COMPOSITE, 3259 - .data = (const struct snd_usb_audio_quirk[]) { 4197 + QUIRK_DRIVER_INFO { 4198 + QUIRK_DATA_COMPOSITE { 3260 4199 { 3261 - .ifnum = 0, 3262 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3263 - .data = &(const struct audioformat) { 4200 + QUIRK_DATA_AUDIOFORMAT(0) { 3264 4201 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3265 4202 .channels = 10, 3266 4203 .iface = 0, ··· 3275 4220 } 3276 4221 }, 3277 4222 { 3278 - .ifnum = 0, 3279 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3280 - .data = &(const struct audioformat) { 4223 + QUIRK_DATA_AUDIOFORMAT(0) { 3281 4224 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3282 4225 .channels = 12, 3283 4226 .iface = 0, ··· 3293 4240 .rate_table = (unsigned int[]) { 48000 } 3294 4241 } 3295 4242 }, 3296 - { 3297 - .ifnum = -1 3298 - } 4243 + QUIRK_COMPOSITE_END 3299 4244 } 3300 4245 } 3301 4246 }, ··· 3305 4254 * Capture on EP 0x86 3306 4255 */ 3307 4256 USB_DEVICE_VENDOR_SPEC(0x08e4, 0x0163), 3308 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3309 - .ifnum = QUIRK_ANY_INTERFACE, 3310 - .type = QUIRK_COMPOSITE, 3311 - .data = (const struct snd_usb_audio_quirk[]) { 4257 + QUIRK_DRIVER_INFO { 4258 + QUIRK_DATA_COMPOSITE { 3312 4259 { 3313 - .ifnum = 0, 3314 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3315 - .data = &(const struct audioformat) { 4260 + QUIRK_DATA_AUDIOFORMAT(0) { 3316 4261 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3317 4262 .channels = 8, 3318 4263 .iface = 0, ··· 3328 4281 } 3329 4282 }, 3330 4283 { 3331 - .ifnum = 0, 3332 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3333 - .data = &(const struct audioformat) { 4284 + QUIRK_DATA_AUDIOFORMAT(0) { 3334 4285 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3335 4286 .channels = 8, 3336 4287 .iface = 0, ··· 3348 4303 .rate_table = (unsigned int[]) { 44100, 48000, 96000 } 3349 4304 } 3350 4305 }, 3351 - { 3352 - .ifnum = -1 3353 - } 4306 + QUIRK_COMPOSITE_END 3354 4307 } 3355 4308 } 3356 4309 }, ··· 3359 4316 * and 8 channels in @ 48 fixed (endpoint 0x82). 3360 4317 */ 3361 4318 USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013), 3362 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3363 - .ifnum = QUIRK_ANY_INTERFACE, 3364 - .type = QUIRK_COMPOSITE, 3365 - .data = (const struct snd_usb_audio_quirk[]) { 4319 + QUIRK_DRIVER_INFO { 4320 + QUIRK_DATA_COMPOSITE { 3366 4321 { 3367 - .ifnum = 0, 3368 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3369 - .data = &(const struct audioformat) { 4322 + QUIRK_DATA_AUDIOFORMAT(0) { 3370 4323 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3371 4324 .channels = 8, // outputs 3372 4325 .iface = 0, ··· 3379 4340 } 3380 4341 }, 3381 4342 { 3382 - .ifnum = 0, 3383 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3384 - .data = &(const struct audioformat) { 4343 + QUIRK_DATA_AUDIOFORMAT(0) { 3385 4344 .formats = SNDRV_PCM_FMTBIT_S24_3LE, 3386 4345 .channels = 8, // inputs 3387 4346 .iface = 0, ··· 3397 4360 .rate_table = (unsigned int[]) { 48000 } 3398 4361 } 3399 4362 }, 3400 - { 3401 - .ifnum = -1 3402 - } 4363 + QUIRK_COMPOSITE_END 3403 4364 } 3404 4365 } 3405 4366 }, ··· 3408 4373 */ 3409 4374 USB_DEVICE(0x1395, 0x0300), 3410 4375 .bInterfaceClass = USB_CLASS_PER_INTERFACE, 3411 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 3412 - .ifnum = QUIRK_ANY_INTERFACE, 3413 - .type = QUIRK_COMPOSITE, 3414 - .data = &(const struct snd_usb_audio_quirk[]) { 4376 + QUIRK_DRIVER_INFO { 4377 + QUIRK_DATA_COMPOSITE { 3415 4378 // Communication 3416 - { 3417 - .ifnum = 3, 3418 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3419 - }, 4379 + { QUIRK_DATA_STANDARD_AUDIO(3) }, 3420 4380 // Recording 3421 - { 3422 - .ifnum = 4, 3423 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3424 - }, 4381 + { QUIRK_DATA_STANDARD_AUDIO(4) }, 3425 4382 // Main 3426 - { 3427 - .ifnum = 1, 3428 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3429 - }, 3430 - { 3431 - .ifnum = -1 3432 - } 4383 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 4384 + QUIRK_COMPOSITE_END 3433 4385 } 3434 4386 } 3435 4387 }, ··· 3425 4403 * Fiero SC-01 (firmware v1.0.0 @ 48 kHz) 3426 4404 */ 3427 4405 USB_DEVICE(0x2b53, 0x0023), 3428 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 4406 + QUIRK_DRIVER_INFO { 3429 4407 .vendor_name = "Fiero", 3430 4408 .product_name = "SC-01", 3431 - .ifnum = QUIRK_ANY_INTERFACE, 3432 - .type = QUIRK_COMPOSITE, 3433 - .data = &(const struct snd_usb_audio_quirk[]) { 3434 - { 3435 - .ifnum = 0, 3436 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3437 - }, 4409 + QUIRK_DATA_COMPOSITE { 4410 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 3438 4411 /* Playback */ 3439 4412 { 3440 - .ifnum = 1, 3441 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3442 - .data = &(const struct audioformat) { 4413 + QUIRK_DATA_AUDIOFORMAT(1) { 3443 4414 .formats = SNDRV_PCM_FMTBIT_S32_LE, 3444 4415 .channels = 2, 3445 4416 .fmt_bits = 24, ··· 3452 4437 }, 3453 4438 /* Capture */ 3454 4439 { 3455 - .ifnum = 2, 3456 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3457 - .data = &(const struct audioformat) { 4440 + QUIRK_DATA_AUDIOFORMAT(2) { 3458 4441 .formats = SNDRV_PCM_FMTBIT_S32_LE, 3459 4442 .channels = 2, 3460 4443 .fmt_bits = 24, ··· 3471 4458 .clock = 0x29 3472 4459 } 3473 4460 }, 3474 - { 3475 - .ifnum = -1 3476 - } 4461 + QUIRK_COMPOSITE_END 3477 4462 } 3478 4463 } 3479 4464 }, ··· 3480 4469 * Fiero SC-01 (firmware v1.0.0 @ 96 kHz) 3481 4470 */ 3482 4471 USB_DEVICE(0x2b53, 0x0024), 3483 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 4472 + QUIRK_DRIVER_INFO { 3484 4473 .vendor_name = "Fiero", 3485 4474 .product_name = "SC-01", 3486 - .ifnum = QUIRK_ANY_INTERFACE, 3487 - .type = QUIRK_COMPOSITE, 3488 - .data = &(const struct snd_usb_audio_quirk[]) { 3489 - { 3490 - .ifnum = 0, 3491 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3492 - }, 4475 + QUIRK_DATA_COMPOSITE { 4476 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 3493 4477 /* Playback */ 3494 4478 { 3495 - .ifnum = 1, 3496 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3497 - .data = &(const struct audioformat) { 4479 + QUIRK_DATA_AUDIOFORMAT(1) { 3498 4480 .formats = SNDRV_PCM_FMTBIT_S32_LE, 3499 4481 .channels = 2, 3500 4482 .fmt_bits = 24, ··· 3507 4503 }, 3508 4504 /* Capture */ 3509 4505 { 3510 - .ifnum = 2, 3511 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3512 - .data = &(const struct audioformat) { 4506 + QUIRK_DATA_AUDIOFORMAT(2) { 3513 4507 .formats = SNDRV_PCM_FMTBIT_S32_LE, 3514 4508 .channels = 2, 3515 4509 .fmt_bits = 24, ··· 3526 4524 .clock = 0x29 3527 4525 } 3528 4526 }, 3529 - { 3530 - .ifnum = -1 3531 - } 4527 + QUIRK_COMPOSITE_END 3532 4528 } 3533 4529 } 3534 4530 }, ··· 3535 4535 * Fiero SC-01 (firmware v1.1.0) 3536 4536 */ 3537 4537 USB_DEVICE(0x2b53, 0x0031), 3538 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 4538 + QUIRK_DRIVER_INFO { 3539 4539 .vendor_name = "Fiero", 3540 4540 .product_name = "SC-01", 3541 - .ifnum = QUIRK_ANY_INTERFACE, 3542 - .type = QUIRK_COMPOSITE, 3543 - .data = &(const struct snd_usb_audio_quirk[]) { 3544 - { 3545 - .ifnum = 0, 3546 - .type = QUIRK_AUDIO_STANDARD_INTERFACE 3547 - }, 4541 + QUIRK_DATA_COMPOSITE { 4542 + { QUIRK_DATA_STANDARD_AUDIO(0) }, 3548 4543 /* Playback */ 3549 4544 { 3550 - .ifnum = 1, 3551 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3552 - .data = &(const struct audioformat) { 4545 + QUIRK_DATA_AUDIOFORMAT(1) { 3553 4546 .formats = SNDRV_PCM_FMTBIT_S32_LE, 3554 4547 .channels = 2, 3555 4548 .fmt_bits = 24, ··· 3563 4570 }, 3564 4571 /* Capture */ 3565 4572 { 3566 - .ifnum = 2, 3567 - .type = QUIRK_AUDIO_FIXED_ENDPOINT, 3568 - .data = &(const struct audioformat) { 4573 + QUIRK_DATA_AUDIOFORMAT(2) { 3569 4574 .formats = SNDRV_PCM_FMTBIT_S32_LE, 3570 4575 .channels = 2, 3571 4576 .fmt_bits = 24, ··· 3583 4592 .clock = 0x29 3584 4593 } 3585 4594 }, 3586 - { 3587 - .ifnum = -1 3588 - } 4595 + QUIRK_COMPOSITE_END 3589 4596 } 3590 4597 } 3591 4598 }, ··· 3592 4603 * For the standard mode, Mythware XA001AU has ID ffad:a001 3593 4604 */ 3594 4605 USB_DEVICE_VENDOR_SPEC(0xffad, 0xa001), 3595 - .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { 4606 + QUIRK_DRIVER_INFO { 3596 4607 .vendor_name = "Mythware", 3597 4608 .product_name = "XA001AU", 3598 - .ifnum = QUIRK_ANY_INTERFACE, 3599 - .type = QUIRK_COMPOSITE, 3600 - .data = (const struct snd_usb_audio_quirk[]) { 3601 - { 3602 - .ifnum = 0, 3603 - .type = QUIRK_IGNORE_INTERFACE, 3604 - }, 3605 - { 3606 - .ifnum = 1, 3607 - .type = QUIRK_AUDIO_STANDARD_INTERFACE, 3608 - }, 3609 - { 3610 - .ifnum = 2, 3611 - .type = QUIRK_AUDIO_STANDARD_INTERFACE, 3612 - }, 3613 - { 3614 - .ifnum = -1 3615 - } 4609 + QUIRK_DATA_COMPOSITE { 4610 + { QUIRK_DATA_IGNORE(0) }, 4611 + { QUIRK_DATA_STANDARD_AUDIO(1) }, 4612 + { QUIRK_DATA_STANDARD_AUDIO(2) }, 4613 + QUIRK_COMPOSITE_END 3616 4614 } 3617 4615 } 3618 4616 },