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