@@ -3673,176 +3673,181 @@ YAMAHA_DEVICE(0x7010, "UB99"),
36733673 }
36743674 }
36753675},
3676- {
3677- /* Only claim interface 0 */
3678- .match_flags = USB_DEVICE_ID_MATCH_VENDOR |
3679- USB_DEVICE_ID_MATCH_PRODUCT |
3680- USB_DEVICE_ID_MATCH_INT_CLASS |
3681- USB_DEVICE_ID_MATCH_INT_NUMBER ,
3682- .idVendor = 0x2a39 ,
3683- .idProduct = 0x3f8c ,
3684- .bInterfaceClass = USB_CLASS_VENDOR_SPEC ,
3685- .bInterfaceNumber = 0 ,
3686- QUIRK_DRIVER_INFO {
3687- QUIRK_DATA_COMPOSITE {
3676+ #define QUIRK_RME_DIGIFACE (pid ) \
3677+ { \
3678+ /* Only claim interface 0 */ \
3679+ .match_flags = USB_DEVICE_ID_MATCH_VENDOR | \
3680+ USB_DEVICE_ID_MATCH_PRODUCT | \
3681+ USB_DEVICE_ID_MATCH_INT_CLASS | \
3682+ USB_DEVICE_ID_MATCH_INT_NUMBER , \
3683+ .idVendor = 0x2a39 , \
3684+ .idProduct = pid , \
3685+ .bInterfaceClass = USB_CLASS_VENDOR_SPEC , \
3686+ .bInterfaceNumber = 0 , \
3687+ QUIRK_DRIVER_INFO { \
3688+ QUIRK_DATA_COMPOSITE { \
36883689 /*
36893690 * Three modes depending on sample rate band,
36903691 * with different channel counts for in/out
3691- */
3692- { QUIRK_DATA_STANDARD_MIXER (0 ) },
3693- {
3694- QUIRK_DATA_AUDIOFORMAT (0 ) {
3695- .formats = SNDRV_PCM_FMTBIT_S32_LE ,
3696- .channels = 34 , // outputs
3697- .fmt_bits = 24 ,
3698- .iface = 0 ,
3699- .altsetting = 1 ,
3700- .altset_idx = 1 ,
3701- .endpoint = 0x02 ,
3702- .ep_idx = 1 ,
3703- .ep_attr = USB_ENDPOINT_XFER_ISOC |
3704- USB_ENDPOINT_SYNC_ASYNC ,
3705- .rates = SNDRV_PCM_RATE_32000 |
3706- SNDRV_PCM_RATE_44100 |
3707- SNDRV_PCM_RATE_48000 ,
3708- .rate_min = 32000 ,
3709- .rate_max = 48000 ,
3710- .nr_rates = 3 ,
3711- .rate_table = (unsigned int []) {
3712- 32000 , 44100 , 48000 ,
3713- },
3714- .sync_ep = 0x81 ,
3715- .sync_iface = 0 ,
3716- .sync_altsetting = 1 ,
3717- .sync_ep_idx = 0 ,
3718- .implicit_fb = 1 ,
3719- },
3720- },
3721- {
3722- QUIRK_DATA_AUDIOFORMAT (0 ) {
3723- .formats = SNDRV_PCM_FMTBIT_S32_LE ,
3724- .channels = 18 , // outputs
3725- .fmt_bits = 24 ,
3726- .iface = 0 ,
3727- .altsetting = 1 ,
3728- .altset_idx = 1 ,
3729- .endpoint = 0x02 ,
3730- .ep_idx = 1 ,
3731- .ep_attr = USB_ENDPOINT_XFER_ISOC |
3732- USB_ENDPOINT_SYNC_ASYNC ,
3733- .rates = SNDRV_PCM_RATE_64000 |
3734- SNDRV_PCM_RATE_88200 |
3735- SNDRV_PCM_RATE_96000 ,
3736- .rate_min = 64000 ,
3737- .rate_max = 96000 ,
3738- .nr_rates = 3 ,
3739- .rate_table = (unsigned int []) {
3740- 64000 , 88200 , 96000 ,
3741- },
3742- .sync_ep = 0x81 ,
3743- .sync_iface = 0 ,
3744- .sync_altsetting = 1 ,
3745- .sync_ep_idx = 0 ,
3746- .implicit_fb = 1 ,
3747- },
3748- },
3749- {
3750- QUIRK_DATA_AUDIOFORMAT (0 ) {
3751- .formats = SNDRV_PCM_FMTBIT_S32_LE ,
3752- .channels = 10 , // outputs
3753- .fmt_bits = 24 ,
3754- .iface = 0 ,
3755- .altsetting = 1 ,
3756- .altset_idx = 1 ,
3757- .endpoint = 0x02 ,
3758- .ep_idx = 1 ,
3759- .ep_attr = USB_ENDPOINT_XFER_ISOC |
3760- USB_ENDPOINT_SYNC_ASYNC ,
3761- .rates = SNDRV_PCM_RATE_KNOT |
3762- SNDRV_PCM_RATE_176400 |
3763- SNDRV_PCM_RATE_192000 ,
3764- .rate_min = 128000 ,
3765- .rate_max = 192000 ,
3766- .nr_rates = 3 ,
3767- .rate_table = (unsigned int []) {
3768- 128000 , 176400 , 192000 ,
3769- },
3770- .sync_ep = 0x81 ,
3771- .sync_iface = 0 ,
3772- .sync_altsetting = 1 ,
3773- .sync_ep_idx = 0 ,
3774- .implicit_fb = 1 ,
3775- },
3776- },
3777- {
3778- QUIRK_DATA_AUDIOFORMAT (0 ) {
3779- .formats = SNDRV_PCM_FMTBIT_S32_LE ,
3780- .channels = 32 , // inputs
3781- .fmt_bits = 24 ,
3782- .iface = 0 ,
3783- .altsetting = 1 ,
3784- .altset_idx = 1 ,
3785- .endpoint = 0x81 ,
3786- .ep_attr = USB_ENDPOINT_XFER_ISOC |
3787- USB_ENDPOINT_SYNC_ASYNC ,
3788- .rates = SNDRV_PCM_RATE_32000 |
3789- SNDRV_PCM_RATE_44100 |
3790- SNDRV_PCM_RATE_48000 ,
3791- .rate_min = 32000 ,
3792- .rate_max = 48000 ,
3793- .nr_rates = 3 ,
3794- .rate_table = (unsigned int []) {
3795- 32000 , 44100 , 48000 ,
3796- }
3797- }
3798- },
3799- {
3800- QUIRK_DATA_AUDIOFORMAT (0 ) {
3801- .formats = SNDRV_PCM_FMTBIT_S32_LE ,
3802- .channels = 16 , // inputs
3803- .fmt_bits = 24 ,
3804- .iface = 0 ,
3805- .altsetting = 1 ,
3806- .altset_idx = 1 ,
3807- .endpoint = 0x81 ,
3808- .ep_attr = USB_ENDPOINT_XFER_ISOC |
3809- USB_ENDPOINT_SYNC_ASYNC ,
3810- .rates = SNDRV_PCM_RATE_64000 |
3811- SNDRV_PCM_RATE_88200 |
3812- SNDRV_PCM_RATE_96000 ,
3813- .rate_min = 64000 ,
3814- .rate_max = 96000 ,
3815- .nr_rates = 3 ,
3816- .rate_table = (unsigned int []) {
3817- 64000 , 88200 , 96000 ,
3818- }
3819- }
3820- },
3821- {
3822- QUIRK_DATA_AUDIOFORMAT (0 ) {
3823- .formats = SNDRV_PCM_FMTBIT_S32_LE ,
3824- .channels = 8 , // inputs
3825- .fmt_bits = 24 ,
3826- .iface = 0 ,
3827- .altsetting = 1 ,
3828- .altset_idx = 1 ,
3829- .endpoint = 0x81 ,
3830- .ep_attr = USB_ENDPOINT_XFER_ISOC |
3831- USB_ENDPOINT_SYNC_ASYNC ,
3832- .rates = SNDRV_PCM_RATE_KNOT |
3833- SNDRV_PCM_RATE_176400 |
3834- SNDRV_PCM_RATE_192000 ,
3835- .rate_min = 128000 ,
3836- .rate_max = 192000 ,
3837- .nr_rates = 3 ,
3838- .rate_table = (unsigned int []) {
3839- 128000 , 176400 , 192000 ,
3840- }
3841- }
3842- },
3843- QUIRK_COMPOSITE_END
3844- }
3845- }
3846- },
3692+ */ \
3693+ { QUIRK_DATA_STANDARD_MIXER (0 ) }, \
3694+ { \
3695+ QUIRK_DATA_AUDIOFORMAT (0 ) { \
3696+ .formats = SNDRV_PCM_FMTBIT_S32_LE , \
3697+ .channels = 34 , /* outputs */ \
3698+ .fmt_bits = 24 , \
3699+ .iface = 0 , \
3700+ .altsetting = 1 , \
3701+ .altset_idx = 1 , \
3702+ .endpoint = 0x02 , \
3703+ .ep_idx = 1 , \
3704+ .ep_attr = USB_ENDPOINT_XFER_ISOC | \
3705+ USB_ENDPOINT_SYNC_ASYNC , \
3706+ .rates = SNDRV_PCM_RATE_32000 | \
3707+ SNDRV_PCM_RATE_44100 | \
3708+ SNDRV_PCM_RATE_48000 , \
3709+ .rate_min = 32000 , \
3710+ .rate_max = 48000 , \
3711+ .nr_rates = 3 , \
3712+ .rate_table = (unsigned int []) { \
3713+ 32000 , 44100 , 48000 , \
3714+ }, \
3715+ .sync_ep = 0x81 , \
3716+ .sync_iface = 0 , \
3717+ .sync_altsetting = 1 , \
3718+ .sync_ep_idx = 0 , \
3719+ .implicit_fb = 1 , \
3720+ }, \
3721+ }, \
3722+ { \
3723+ QUIRK_DATA_AUDIOFORMAT (0 ) { \
3724+ .formats = SNDRV_PCM_FMTBIT_S32_LE , \
3725+ .channels = 18 , /* outputs */ \
3726+ .fmt_bits = 24 , \
3727+ .iface = 0 , \
3728+ .altsetting = 1 , \
3729+ .altset_idx = 1 , \
3730+ .endpoint = 0x02 , \
3731+ .ep_idx = 1 , \
3732+ .ep_attr = USB_ENDPOINT_XFER_ISOC | \
3733+ USB_ENDPOINT_SYNC_ASYNC , \
3734+ .rates = SNDRV_PCM_RATE_64000 | \
3735+ SNDRV_PCM_RATE_88200 | \
3736+ SNDRV_PCM_RATE_96000 , \
3737+ .rate_min = 64000 , \
3738+ .rate_max = 96000 , \
3739+ .nr_rates = 3 , \
3740+ .rate_table = (unsigned int []) { \
3741+ 64000 , 88200 , 96000 , \
3742+ }, \
3743+ .sync_ep = 0x81 , \
3744+ .sync_iface = 0 , \
3745+ .sync_altsetting = 1 , \
3746+ .sync_ep_idx = 0 , \
3747+ .implicit_fb = 1 , \
3748+ }, \
3749+ }, \
3750+ { \
3751+ QUIRK_DATA_AUDIOFORMAT (0 ) { \
3752+ .formats = SNDRV_PCM_FMTBIT_S32_LE , \
3753+ .channels = 10 , /* outputs */ \
3754+ .fmt_bits = 24 , \
3755+ .iface = 0 , \
3756+ .altsetting = 1 , \
3757+ .altset_idx = 1 , \
3758+ .endpoint = 0x02 , \
3759+ .ep_idx = 1 , \
3760+ .ep_attr = USB_ENDPOINT_XFER_ISOC | \
3761+ USB_ENDPOINT_SYNC_ASYNC , \
3762+ .rates = SNDRV_PCM_RATE_KNOT | \
3763+ SNDRV_PCM_RATE_176400 | \
3764+ SNDRV_PCM_RATE_192000 , \
3765+ .rate_min = 128000 , \
3766+ .rate_max = 192000 , \
3767+ .nr_rates = 3 , \
3768+ .rate_table = (unsigned int []) { \
3769+ 128000 , 176400 , 192000 , \
3770+ }, \
3771+ .sync_ep = 0x81 , \
3772+ .sync_iface = 0 , \
3773+ .sync_altsetting = 1 , \
3774+ .sync_ep_idx = 0 , \
3775+ .implicit_fb = 1 , \
3776+ }, \
3777+ }, \
3778+ { \
3779+ QUIRK_DATA_AUDIOFORMAT (0 ) { \
3780+ .formats = SNDRV_PCM_FMTBIT_S32_LE , \
3781+ .channels = 32 , /* inputs */ \
3782+ .fmt_bits = 24 , \
3783+ .iface = 0 , \
3784+ .altsetting = 1 , \
3785+ .altset_idx = 1 , \
3786+ .endpoint = 0x81 , \
3787+ .ep_attr = USB_ENDPOINT_XFER_ISOC | \
3788+ USB_ENDPOINT_SYNC_ASYNC , \
3789+ .rates = SNDRV_PCM_RATE_32000 | \
3790+ SNDRV_PCM_RATE_44100 | \
3791+ SNDRV_PCM_RATE_48000 , \
3792+ .rate_min = 32000 , \
3793+ .rate_max = 48000 , \
3794+ .nr_rates = 3 , \
3795+ .rate_table = (unsigned int []) { \
3796+ 32000 , 44100 , 48000 , \
3797+ } \
3798+ } \
3799+ }, \
3800+ { \
3801+ QUIRK_DATA_AUDIOFORMAT (0 ) { \
3802+ .formats = SNDRV_PCM_FMTBIT_S32_LE , \
3803+ .channels = 16 , /* inputs */ \
3804+ .fmt_bits = 24 , \
3805+ .iface = 0 , \
3806+ .altsetting = 1 , \
3807+ .altset_idx = 1 , \
3808+ .endpoint = 0x81 , \
3809+ .ep_attr = USB_ENDPOINT_XFER_ISOC | \
3810+ USB_ENDPOINT_SYNC_ASYNC , \
3811+ .rates = SNDRV_PCM_RATE_64000 | \
3812+ SNDRV_PCM_RATE_88200 | \
3813+ SNDRV_PCM_RATE_96000 , \
3814+ .rate_min = 64000 , \
3815+ .rate_max = 96000 , \
3816+ .nr_rates = 3 , \
3817+ .rate_table = (unsigned int []) { \
3818+ 64000 , 88200 , 96000 , \
3819+ } \
3820+ } \
3821+ }, \
3822+ { \
3823+ QUIRK_DATA_AUDIOFORMAT (0 ) { \
3824+ .formats = SNDRV_PCM_FMTBIT_S32_LE , \
3825+ .channels = 8 , /* inputs */ \
3826+ .fmt_bits = 24 , \
3827+ .iface = 0 , \
3828+ .altsetting = 1 , \
3829+ .altset_idx = 1 , \
3830+ .endpoint = 0x81 , \
3831+ .ep_attr = USB_ENDPOINT_XFER_ISOC | \
3832+ USB_ENDPOINT_SYNC_ASYNC , \
3833+ .rates = SNDRV_PCM_RATE_KNOT | \
3834+ SNDRV_PCM_RATE_176400 | \
3835+ SNDRV_PCM_RATE_192000 , \
3836+ .rate_min = 128000 , \
3837+ .rate_max = 192000 , \
3838+ .nr_rates = 3 , \
3839+ .rate_table = (unsigned int []) { \
3840+ 128000 , 176400 , 192000 , \
3841+ } \
3842+ } \
3843+ }, \
3844+ QUIRK_COMPOSITE_END \
3845+ } \
3846+ } \
3847+ }
3848+
3849+ QUIRK_RME_DIGIFACE (0x3f8c ),
3850+ QUIRK_RME_DIGIFACE (0x3fa0 ),
3851+
38473852#undef USB_DEVICE_VENDOR_SPEC
38483853#undef USB_AUDIO_DEVICE
0 commit comments