public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: William Overton <willovertonuk@gmail.com>,
	Takashi Iwai <tiwai@suse.de>, Sasha Levin <sashal@kernel.org>,
	perex@perex.cz, tiwai@suse.com, gregkh@linuxfoundation.org,
	brendan@grieve.com.au, alsa-devel@alsa-project.org
Subject: [PATCH AUTOSEL 5.14 49/75] ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard
Date: Tue,  9 Nov 2021 17:18:39 -0500	[thread overview]
Message-ID: <20211109221905.1234094-49-sashal@kernel.org> (raw)
In-Reply-To: <20211109221905.1234094-1-sashal@kernel.org>

From: William Overton <willovertonuk@gmail.com>

[ Upstream commit 6d27788160362a7ee6c0d317636fe4b1ddbe59a7 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/usb/mixer_quirks.c | 34 +++++++++++++++++++++++
 sound/usb/quirks-table.h | 58 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+)

diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
index 4a4d3361ac047..ef92ac37cf1a9 100644
--- a/sound/usb/mixer_quirks.c
+++ b/sound/usb/mixer_quirks.c
@@ -2654,6 +2654,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) { \
@@ -2843,10 +2844,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)
 };
@@ -3094,6 +3125,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;
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 91d40b4c851c1..ac55c7dad950f 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -3960,6 +3960,64 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
 		}
 	}
 },
+{
+	/*
+	 * 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
-- 
2.33.0


  parent reply	other threads:[~2021-11-09 22:27 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-09 22:17 [PATCH AUTOSEL 5.14 01/75] arm64: zynqmp: Do not duplicate flash partition label property Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 02/75] arm64: zynqmp: Fix serial compatible string Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 03/75] clk: sunxi-ng: Unregister clocks/resets when unbinding Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 04/75] ARM: dts: sunxi: Fix OPPs node name Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 05/75] arm64: dts: allwinner: h5: Fix GPU thermal zone " Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 06/75] arm64: dts: allwinner: a100: Fix " Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 07/75] staging: wfx: ensure IRQ is ready before enabling it Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 08/75] ARM: dts: BCM5301X: Fix nodes names Sasha Levin
2021-11-09 22:17 ` [PATCH AUTOSEL 5.14 09/75] ARM: dts: BCM5301X: Fix MDIO mux binding Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 10/75] ARM: dts: NSP: Fix mpcore, mmc node names Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 11/75] arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 12/75] scsi: pm80xx: Fix memory leak during rmmod Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 13/75] scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 14/75] arm64: dts: rockchip: Disable CDN DP on Pinebook Pro Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 15/75] arm64: dts: hisilicon: fix arm,sp805 compatible string Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 16/75] arm64: dts: rockchip: add Coresight debug range for RK3399 Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 17/75] RDMA/bnxt_re: Check if the vlan is valid before reporting Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 18/75] bus: ti-sysc: Add quirk handling for reinit on context lost Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 19/75] bus: ti-sysc: Use context lost quirk for otg Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 20/75] usb: musb: tusb6010: check return value after calling platform_get_resource() Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 21/75] usb: typec: tipd: Remove WARN_ON in tps6598x_block_read Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 22/75] ARM: dts: ux500: Skomer regulator fixes Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 23/75] staging: rtl8723bs: remove possible deadlock when disconnect (v2) Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 24/75] staging: rtl8723bs: remove a third possible deadlock Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 25/75] ARM: BCM53016: Specify switch ports for Meraki MR32 Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 26/75] arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 27/75] arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 28/75] arm64: dts: qcom: sdm845: " Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 29/75] arm64: dts: qcom: msm8916: Add unit name for /soc node Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 30/75] arm64: dts: freescale: fix arm,sp805 compatible string Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 31/75] arm64: dts: ls1012a: Add serial alias for ls1012a-rdb Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 32/75] RDMA/rxe: Separate HW and SW l/rkeys Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 33/75] ASoC: SOF: Intel: hda-dai: fix potential locking issue Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 34/75] scsi: core: Fix scsi_mode_sense() buffer length handling Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 35/75] ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and UFX1604 Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 36/75] clk: imx: imx6ul: Move csi_sel mux to correct base register Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 37/75] ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 38/75] ASoC: rt5651: " Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 39/75] ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 40/75] scsi: advansys: Fix kernel pointer leak Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 41/75] scsi: smartpqi: Add controller handshake during kdump Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 42/75] arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 43/75] ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 codec Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 44/75] ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 45/75] ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 46/75] firmware_loader: fix pre-allocated buf built-in firmware use Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 47/75] cpuidle: tegra: Check whether PMC is ready Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 48/75] HID: multitouch: disable sticky fingers for UPERFECT Y Sasha Levin
2021-11-09 22:18 ` Sasha Levin [this message]
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 50/75] ARM: dts: omap: fix gpmc,mux-add-data type Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 51/75] usb: host: ohci-tmio: check return value after calling platform_get_resource() Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 52/75] ARM: dts: ls1021a: move thermal-zones node out of soc/ Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 53/75] ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 54/75] ALSA: ISA: not for M68K Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 55/75] iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 56/75] tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 57/75] MIPS: sni: Fix the build Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 58/75] scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 59/75] scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 60/75] scsi: target: Fix ordered tag handling Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 61/75] scsi: target: Fix alua_tg_pt_gps_count tracking Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 62/75] iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 63/75] RDMA/core: Use kvzalloc when allocating the struct ib_port Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 64/75] scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 65/75] scsi: lpfc: Fix link down processing to address NULL pointer dereference Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 66/75] memory: tegra20-emc: Add runtime dependency on devfreq governor module Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 67/75] powerpc/5200: dts: fix memory node unit name Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 68/75] arm64: dts: qcom: msm8916: Add CPU ACC and SAW/SPM Sasha Levin
2021-11-09 22:18 ` [PATCH AUTOSEL 5.14 69/75] ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 Sasha Levin
2021-11-09 22:19 ` [PATCH AUTOSEL 5.14 70/75] ALSA: gus: fix null pointer dereference on pointer block Sasha Levin
2021-11-09 22:19 ` [PATCH AUTOSEL 5.14 71/75] ALSA: usb-audio: fix null pointer dereference on pointer cs_desc Sasha Levin
2021-11-09 22:19 ` [PATCH AUTOSEL 5.14 72/75] clk: at91: sama7g5: remove prescaler part of master clock Sasha Levin
2021-11-09 22:19 ` [PATCH AUTOSEL 5.14 73/75] powerpc/dcr: Use cmplwi instead of 3-argument cmpli Sasha Levin
2021-11-09 22:19 ` [PATCH AUTOSEL 5.14 74/75] powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST Sasha Levin
2021-11-09 22:19 ` [PATCH AUTOSEL 5.14 75/75] HID: playstation: require multicolor LED functionality Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211109221905.1234094-49-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=brendan@grieve.com.au \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.com \
    --cc=tiwai@suse.de \
    --cc=willovertonuk@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox