mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard
The kernel already has support for very similar Pioneer djm products and this work is based on that. Added device to quirks-table.h and added control info to mixer_quirks.c. Tested on my hardware and all working. Signed-off-by: William Overton <willovertonuk@gmail.com> Link: https://lore.kernel.org/r/20211010145841.11907-1-willovertonuk@gmail.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
							parent
							
								
									59d7f5f6dd
								
							
						
					
					
						commit
						6d27788160
					
				
					 2 changed files with 92 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -2795,6 +2795,7 @@ static int snd_bbfpro_controls_create(struct usb_mixer_interface *mixer)
 | 
			
		|||
#define SND_DJM_750_IDX		0x1
 | 
			
		||||
#define SND_DJM_850_IDX		0x2
 | 
			
		||||
#define SND_DJM_900NXS2_IDX	0x3
 | 
			
		||||
#define SND_DJM_750MK2_IDX	0x4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SND_DJM_CTL(_name, suffix, _default_value, _windex) { \
 | 
			
		||||
| 
						 | 
				
			
			@ -2984,10 +2985,40 @@ static const struct snd_djm_ctl snd_djm_ctls_900nxs2[] = {
 | 
			
		|||
	SND_DJM_CTL("Ch5 Input",   900nxs2_cap5, 3, SND_DJM_WINDEX_CAP)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// DJM-750MK2
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_cap1[] = {
 | 
			
		||||
	0x0100, 0x0102, 0x0103, 0x0106, 0x0107, 0x0108, 0x0109, 0x010a };
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_cap2[] = {
 | 
			
		||||
	0x0200, 0x0202, 0x0203, 0x0206, 0x0207, 0x0208, 0x0209, 0x020a };
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_cap3[] = {
 | 
			
		||||
	0x0300, 0x0302, 0x0303, 0x0306, 0x0307, 0x0308, 0x0309, 0x030a };
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_cap4[] = {
 | 
			
		||||
	0x0400, 0x0402, 0x0403, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a };
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_cap5[] = {
 | 
			
		||||
	0x0507, 0x0508, 0x0509, 0x050a, 0x0511, 0x0512, 0x0513, 0x0514 };
 | 
			
		||||
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_pb1[] = { 0x0100, 0x0101, 0x0104 };
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_pb2[] = { 0x0200, 0x0201, 0x0204 };
 | 
			
		||||
static const u16 snd_djm_opts_750mk2_pb3[] = { 0x0300, 0x0301, 0x0304 };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const struct snd_djm_ctl snd_djm_ctls_750mk2[] = {
 | 
			
		||||
	SND_DJM_CTL("Capture Level", cap_level, 0, SND_DJM_WINDEX_CAPLVL),
 | 
			
		||||
	SND_DJM_CTL("Ch1 Input",   750mk2_cap1, 2, SND_DJM_WINDEX_CAP),
 | 
			
		||||
	SND_DJM_CTL("Ch2 Input",   750mk2_cap2, 2, SND_DJM_WINDEX_CAP),
 | 
			
		||||
	SND_DJM_CTL("Ch3 Input",   750mk2_cap3, 2, SND_DJM_WINDEX_CAP),
 | 
			
		||||
	SND_DJM_CTL("Ch4 Input",   750mk2_cap4, 2, SND_DJM_WINDEX_CAP),
 | 
			
		||||
	SND_DJM_CTL("Ch5 Input",   750mk2_cap5, 3, SND_DJM_WINDEX_CAP),
 | 
			
		||||
	SND_DJM_CTL("Ch1 Output",   750mk2_pb1, 0, SND_DJM_WINDEX_PB),
 | 
			
		||||
	SND_DJM_CTL("Ch2 Output",   750mk2_pb2, 1, SND_DJM_WINDEX_PB),
 | 
			
		||||
	SND_DJM_CTL("Ch3 Output",   750mk2_pb3, 2, SND_DJM_WINDEX_PB)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const struct snd_djm_device snd_djm_devices[] = {
 | 
			
		||||
	SND_DJM_DEVICE(250mk2),
 | 
			
		||||
	SND_DJM_DEVICE(750),
 | 
			
		||||
	SND_DJM_DEVICE(750mk2),
 | 
			
		||||
	SND_DJM_DEVICE(850),
 | 
			
		||||
	SND_DJM_DEVICE(900nxs2)
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -3235,6 +3266,9 @@ int snd_usb_mixer_apply_create_quirk(struct usb_mixer_interface *mixer)
 | 
			
		|||
	case USB_ID(0x08e4, 0x017f): /* Pioneer DJ DJM-750 */
 | 
			
		||||
		err = snd_djm_controls_create(mixer, SND_DJM_750_IDX);
 | 
			
		||||
		break;
 | 
			
		||||
	case USB_ID(0x2b73, 0x001b): /* Pioneer DJ DJM-750MK2 */
 | 
			
		||||
		err = snd_djm_controls_create(mixer, SND_DJM_750MK2_IDX);
 | 
			
		||||
		break;
 | 
			
		||||
	case USB_ID(0x08e4, 0x0163): /* Pioneer DJ DJM-850 */
 | 
			
		||||
		err = snd_djm_controls_create(mixer, SND_DJM_850_IDX);
 | 
			
		||||
		break;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3850,6 +3850,64 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
},
 | 
			
		||||
{
 | 
			
		||||
	/*
 | 
			
		||||
	 * Pioneer DJ DJM-750MK2
 | 
			
		||||
	 * 10 channels playback & 12 channels capture @ 48kHz S24LE
 | 
			
		||||
	 */
 | 
			
		||||
	USB_DEVICE_VENDOR_SPEC(0x2b73, 0x001b),
 | 
			
		||||
	.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 = 10,
 | 
			
		||||
					.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 = 12,
 | 
			
		||||
					.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
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
},
 | 
			
		||||
{
 | 
			
		||||
	/*
 | 
			
		||||
	 * Pioneer DJ DJM-850
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue