diff mbox series

ALSA: usb-audio: Add quirk for Pioneer DDJ-800

Message ID ZFLLzgEcsSF5aIHG@geday
State Accepted
Commit 7501f472977df233d039d86c6981e0641708e1ca
Headers show
Series ALSA: usb-audio: Add quirk for Pioneer DDJ-800 | expand

Commit Message

Geraldo Nascimento May 3, 2023, 9:02 p.m. UTC
One more Pioneer quirk, this time for DDJ-800, which is quite similar like
other DJ DDJ models but with slightly different EPs or channels.

Signed-off-by: Geraldo Nascimento <geraldogabriel@gmail.com>
Tested-by: Grégory Desor <gregory.desor@free.fr>

---

Hi Takashi, this one cropped up in the Mixxx forums as a request and it
works. Grégory says Master and Headphones work OK with this patch, MIC
inputs are untested. Thanks!

Comments

Geraldo Nascimento May 4, 2023, 8:15 a.m. UTC | #1
On Thu, May 04, 2023 at 09:41:26AM +0200, Takashi Iwai wrote:
> Now I applied it, but ....
> 
> > --- sound/usb/quirks-table.h	2023-05-03 17:55:23.133827915 -0300
> > +++ sound/usb/quirks-table.h	2023-05-03 17:56:29.054827946 -0300
> 
> ... the patch should be applicable with -p1, and here the path prefix
> is missing (usually it's a/sound/usb/quirks-table.h, etc).
> 
> Please prepare a correctly formatted patch at the next time.

Sorry Takashi, I'll be more careful next time.

Thank you,
Geraldo Nascimento

> 
> 
> thanks,
> 
> Takashi
diff mbox series

Patch

--- sound/usb/quirks-table.h	2023-05-03 17:55:23.133827915 -0300
+++ sound/usb/quirks-table.h	2023-05-03 17:56:29.054827946 -0300
@@ -3884,6 +3884,64 @@  YAMAHA_DEVICE(0x7010, "UB99"),
 	}
 },
 
+{
+	/*
+	 * PIONEER DJ DDJ-800
+	 * PCM is 6 channels out, 6 channels in @ 44.1 fixed
+	 * The Feedback for the output is the input
+	 */
+	USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0029),
+		.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 = 6,
+					.iface = 0,
+					.altsetting = 1,
+					.altset_idx = 1,
+					.endpoint = 0x01,
+					.ep_attr = USB_ENDPOINT_XFER_ISOC|
+						USB_ENDPOINT_SYNC_ASYNC,
+					.rates = SNDRV_PCM_RATE_44100,
+					.rate_min = 44100,
+					.rate_max = 44100,
+					.nr_rates = 1,
+					.rate_table = (unsigned int[]) { 44100 }
+				}
+			},
+			{
+				.ifnum = 0,
+				.type = QUIRK_AUDIO_FIXED_ENDPOINT,
+				.data = &(const struct audioformat) {
+					.formats = SNDRV_PCM_FMTBIT_S24_3LE,
+					.channels = 6,
+					.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_44100,
+					.rate_min = 44100,
+					.rate_max = 44100,
+					.nr_rates = 1,
+					.rate_table = (unsigned int[]) { 44100 }
+				}
+			},
+			{
+				.ifnum = -1
+			}
+		}
+	}
+},
+
 /*
  * MacroSilicon MS2100/MS2106 based AV capture cards
  *