| From 80df637f37182ab8b5454e73472b22ee5275a7ab Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 2 Feb 2021 13:42:28 +0000 |
| Subject: ALSA: usb-audio: Add DJM-450 to the quirks table |
| |
| From: Olivia Mackintosh <livvy@base.nu> |
| |
| [ Upstream commit 9119e5661eab2c56a96b936cde49c6740dc49ff9 ] |
| |
| As with most Pioneer devices, the device descriptor is vendor specific |
| and as such, the number of channels, the PCM format, endpoints and |
| sample rate need to be specified. This device has 8 inputs and 8 outputs |
| and a sample rate of 48000 only. The PCM format is S24_3LE like other |
| devices. |
| |
| There seems to be an appetite for reducing duplication amongs these |
| Pioneer patches but again, I feel this is a step to be taken after |
| support has been added as it's not completely clear where the |
| commonalities are. |
| |
| Signed-off-by: Olivia Mackintosh <livvy@base.nu> |
| Link: https://lore.kernel.org/r/20210202134225.3217-3-livvy@base.nu |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/usb/quirks-table.h | 57 ++++++++++++++++++++++++++++++++++++++++ |
| 1 file changed, 57 insertions(+) |
| |
| diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h |
| index 93d55cd1a5a4..1165a5ac60f2 100644 |
| --- a/sound/usb/quirks-table.h |
| +++ b/sound/usb/quirks-table.h |
| @@ -3817,6 +3817,63 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"), |
| } |
| } |
| }, |
| +{ |
| + /* |
| + * Pioneer DJ DJM-450 |
| + * PCM is 8 channels out @ 48 fixed (endpoint 0x01) |
| + * and 8 channels in @ 48 fixed (endpoint 0x82). |
| + */ |
| + USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0013), |
| + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { |
| + .ifnum = QUIRK_ANY_INTERFACE, |
| + .type = QUIRK_COMPOSITE, |
| + .data = (const struct snd_usb_audio_quirk[]) { |
| + { |
| + .ifnum = 0, |
| + .type = QUIRK_AUDIO_FIXED_ENDPOINT, |
| + .data = &(const struct audioformat) { |
| + .formats = SNDRV_PCM_FMTBIT_S24_3LE, |
| + .channels = 8, // outputs |
| + .iface = 0, |
| + .altsetting = 1, |
| + .altset_idx = 1, |
| + .endpoint = 0x01, |
| + .ep_attr = USB_ENDPOINT_XFER_ISOC| |
| + USB_ENDPOINT_SYNC_ASYNC, |
| + .rates = SNDRV_PCM_RATE_48000, |
| + .rate_min = 48000, |
| + .rate_max = 48000, |
| + .nr_rates = 1, |
| + .rate_table = (unsigned int[]) { 48000 } |
| + } |
| + }, |
| + { |
| + .ifnum = 0, |
| + .type = QUIRK_AUDIO_FIXED_ENDPOINT, |
| + .data = &(const struct audioformat) { |
| + .formats = SNDRV_PCM_FMTBIT_S24_3LE, |
| + .channels = 8, // inputs |
| + .iface = 0, |
| + .altsetting = 1, |
| + .altset_idx = 1, |
| + .endpoint = 0x82, |
| + .ep_idx = 1, |
| + .ep_attr = USB_ENDPOINT_XFER_ISOC| |
| + USB_ENDPOINT_SYNC_ASYNC| |
| + USB_ENDPOINT_USAGE_IMPLICIT_FB, |
| + .rates = SNDRV_PCM_RATE_48000, |
| + .rate_min = 48000, |
| + .rate_max = 48000, |
| + .nr_rates = 1, |
| + .rate_table = (unsigned int[]) { 48000 } |
| + } |
| + }, |
| + { |
| + .ifnum = -1 |
| + } |
| + } |
| + } |
| +}, |
| |
| #undef USB_DEVICE_VENDOR_SPEC |
| #undef USB_AUDIO_DEVICE |
| -- |
| 2.30.1 |
| |