Commit 14335d8b authored by František Kučera's avatar František Kučera Committed by Takashi Iwai
Browse files

ALSA: usb-audio: Add basic capture support for Pioneer DJ DJM-250MK2



This patch extends support for DJM-250MK2 and allows recording.
However, DVS is not possible yet (see the comment in code).

Signed-off-by: default avatarFrantišek Kučera <franta-linux@frantovo.cz>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200825153113.6352-1-konference@frantovo.cz


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7c5b892e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -375,6 +375,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
		ifnum = 2;
		goto add_sync_ep_from_ifnum;
	case USB_ID(0x2b73, 0x000a): /* Pioneer DJ DJM-900NXS2 */
	case USB_ID(0x2b73, 0x0017): /* Pioneer DJ DJM-250MK2 */
		ep = 0x82;
		ifnum = 0;
		goto add_sync_ep_from_ifnum;
+53 −7
Original line number Diff line number Diff line
@@ -3559,14 +3559,40 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
{
	/*
	 * Pioneer DJ DJM-250MK2
	 * PCM is 8 channels out @ 48 fixed (endpoints 0x01).
	 * The output from computer to the mixer is usable.
	 * PCM is 8 channels out @ 48 fixed (endpoint 0x01)
	 * and 8 channels in @ 48 fixed (endpoint 0x82).
	 *
	 * The input (phono or line to computer) is not working.
	 * It should be at endpoint 0x82 and probably also 8 channels,
	 * but it seems that it works only with Pioneer proprietary software.
	 * Even on officially supported OS, the Audacity was unable to record
	 * and Mixxx to recognize the control vinyls.
	 * Both playback and recording is working, even simultaneously.
	 *
	 * Playback channels could be mapped to:
	 *  - CH1
	 *  - CH2
	 *  - AUX
	 *
	 * Recording channels could be mapped to:
	 *  - Post CH1 Fader
	 *  - Post CH2 Fader
	 *  - Cross Fader A
	 *  - Cross Fader B
	 *  - MIC
	 *  - AUX
	 *  - REC OUT
	 *
	 * There is remaining problem with recording directly from PHONO/LINE.
	 * If we map a channel to:
	 *  - CH1 Control Tone PHONO
	 *  - CH1 Control Tone LINE
	 *  - CH2 Control Tone PHONO
	 *  - CH2 Control Tone LINE
	 * it is silent.
	 * There is no signal even on other operating systems with official drivers.
	 * The signal appears only when a supported application is started.
	 * This needs to be investigated yet...
	 * (there is quite a lot communication on the USB in both directions)
	 *
	 * In current version this mixer could be used for playback
	 * and for recording from vinyls (through Post CH* Fader)
	 * but not for DVS (Digital Vinyl Systems) like in Mixxx.
	 */
	USB_DEVICE_VENDOR_SPEC(0x2b73, 0x0017),
	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
@@ -3592,6 +3618,26 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
					.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_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
			}
+1 −0
Original line number Diff line number Diff line
@@ -1503,6 +1503,7 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
		set_format_emu_quirk(subs, fmt);
		break;
	case USB_ID(0x2b73, 0x000a): /* Pioneer DJ DJM-900NXS2 */
	case USB_ID(0x2b73, 0x0017): /* Pioneer DJ DJM-250MK2 */
		pioneer_djm_set_format_quirk(subs);
		break;
	case USB_ID(0x534d, 0x2109): /* MacroSilicon MS2109 */