Skip to content

Commit b952ac7

Browse files
livmackintoshtiwai
authored andcommitted
ALSA: usb-audio: Add support for Pioneer DJM-750
This adds the Pioneer DJ DJM-750 to the quirks table and ensures skip_pioneer_sync_ep() is (also) called: this device uses the vendor ID of 0x08e4 (I'm not sure why they use multiple vendor IDs but many just like to be awkward it seems). Playback on all 8 channels works. I'll likely keep this working in the future and submit futher patches and improvements as necessary. Signed-off-by: Olivia Mackintosh <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Takashi Iwai <[email protected]>
1 parent c09e28c commit b952ac7

File tree

2 files changed

+62
-1
lines changed

2 files changed

+62
-1
lines changed

sound/usb/implicit.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@ static int audioformat_implicit_fb_quirk(struct snd_usb_audio *chip,
302302
/* Pioneer devices with vendor spec class */
303303
if (attr == USB_ENDPOINT_SYNC_ASYNC &&
304304
alts->desc.bInterfaceClass == USB_CLASS_VENDOR_SPEC &&
305-
USB_ID_VENDOR(chip->usb_id) == 0x2b73 /* Pioneer */) {
305+
(USB_ID_VENDOR(chip->usb_id) == 0x2b73 || /* Pioneer */
306+
USB_ID_VENDOR(chip->usb_id) == 0x08e4 /* Pioneer */)) {
306307
if (skip_pioneer_sync_ep(chip, fmt, alts))
307308
return 1;
308309
}

sound/usb/quirks-table.h

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3757,6 +3757,66 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
37573757
}
37583758
}
37593759
},
3760+
{
3761+
/*
3762+
* Pioneer DJ DJM-750
3763+
* 8 channels playback & 8 channels capture @ 44.1/48/96kHz S24LE
3764+
*/
3765+
USB_DEVICE_VENDOR_SPEC(0x08e4, 0x017f),
3766+
.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
3767+
.ifnum = QUIRK_ANY_INTERFACE,
3768+
.type = QUIRK_COMPOSITE,
3769+
.data = (const struct snd_usb_audio_quirk[]) {
3770+
{
3771+
.ifnum = 0,
3772+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
3773+
.data = &(const struct audioformat) {
3774+
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
3775+
.channels = 8,
3776+
.iface = 0,
3777+
.altsetting = 1,
3778+
.altset_idx = 1,
3779+
.endpoint = 0x05,
3780+
.ep_attr = USB_ENDPOINT_XFER_ISOC|
3781+
USB_ENDPOINT_SYNC_ASYNC,
3782+
.rates = SNDRV_PCM_RATE_44100|
3783+
SNDRV_PCM_RATE_48000|
3784+
SNDRV_PCM_RATE_96000,
3785+
.rate_min = 44100,
3786+
.rate_max = 96000,
3787+
.nr_rates = 3,
3788+
.rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3789+
}
3790+
},
3791+
{
3792+
.ifnum = 0,
3793+
.type = QUIRK_AUDIO_FIXED_ENDPOINT,
3794+
.data = &(const struct audioformat) {
3795+
.formats = SNDRV_PCM_FMTBIT_S24_3LE,
3796+
.channels = 8,
3797+
.iface = 0,
3798+
.altsetting = 1,
3799+
.altset_idx = 1,
3800+
.endpoint = 0x86,
3801+
.ep_idx = 1,
3802+
.ep_attr = USB_ENDPOINT_XFER_ISOC|
3803+
USB_ENDPOINT_SYNC_ASYNC|
3804+
USB_ENDPOINT_USAGE_IMPLICIT_FB,
3805+
.rates = SNDRV_PCM_RATE_44100|
3806+
SNDRV_PCM_RATE_48000|
3807+
SNDRV_PCM_RATE_96000,
3808+
.rate_min = 44100,
3809+
.rate_max = 96000,
3810+
.nr_rates = 3,
3811+
.rate_table = (unsigned int[]) { 44100, 48000, 96000 }
3812+
}
3813+
},
3814+
{
3815+
.ifnum = -1
3816+
}
3817+
}
3818+
}
3819+
},
37603820

37613821
#undef USB_DEVICE_VENDOR_SPEC
37623822
#undef USB_AUDIO_DEVICE

0 commit comments

Comments
 (0)