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: Františ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: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
František Kučera 2020-08-25 17:31:13 +02:00 committed by Takashi Iwai
parent 7c5b892e08
commit 14335d8b9e
3 changed files with 55 additions and 7 deletions

View File

@ -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;

View File

@ -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) {
@ -3590,6 +3616,26 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
.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_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 }
}
},
{

View File

@ -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 */