From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yw1-f171.google.com (mail-yw1-f171.google.com [209.85.128.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 61BC4340402 for ; Wed, 17 Jun 2026 20:39:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781728800; cv=none; b=UZG5FxW1Yjkdggt6N4d55gnslV8Nogfu11M3e9Bxi+ZqVnqzQxIO8yam1M/1phEKMDcwTjyq+Lnh1AaAt/fcPBzlNPuClbvv5XZsQl784j3I/dOwOsChdioR9NML/p2sjqeNKVugFyGRd/8bZ1ysy5/rzUg79BcpdC8t5EWEpK0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781728800; c=relaxed/simple; bh=u3D548Ek3KWqFQaAgrrBfOTLa23fMWzwWURnWVANHxc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=TZpLzQhCpY8vMEPV7PvU1RCHFYSCK0WOouajsNVrAtDLrGZG6E2CFVuyyD9m9XDcvwEiCKSHRGkCLucX/+lwfWZpesi0OShFTNfcco3gzO4a7Vj0hUeWeoiy2Z3m6pjjr34vrYuDAA7dudDraLyGFYx59OXRZH5cA2kgRkwyo0c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CTonjm5U; arc=none smtp.client-ip=209.85.128.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CTonjm5U" Received: by mail-yw1-f171.google.com with SMTP id 00721157ae682-7e1916922b9so3816447b3.1 for ; Wed, 17 Jun 2026 13:39:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781728797; x=1782333597; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=OIEF4Fa/gkBkYZbpYeSi+UCdjsb8psDBijGh79YSssk=; b=CTonjm5UyKT3Fm84EYL92Tw3V2OgH6/waYW/Ce4pdiu7ydnPtckYbkgYceppKhy/LY 0ZODno9kSJ7TYMVvvQFWJdtUJaL50je6AU8JNWm4CfTHwnbE/SRv61rZMuvdXndZIm8j tsQdUs+3cU5zCfv5X4Ov6CKTDWQ278RceVBULXZdybfo+LxYqB/GcwP+YA/wRuhEaVyE o5ChR3iFNIc4H4uTiO6pqR+w5h/GhqsBTmZNSQ+cMzS8kbSAtlfM5Vs/np7/dbheZUdR sLEJXK2mzKflZ4GPs1Rsnzqcl25IY8NCe+dWtYcMI6CP1Ni0z/D27Czuu5EBgma9GPwF 5lEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781728797; x=1782333597; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=OIEF4Fa/gkBkYZbpYeSi+UCdjsb8psDBijGh79YSssk=; b=gzGQwhhT5Bjt9NAprBbrTblGkw1ncNxpPVdxvcAr/08SrF+GXH4u3ChF+d27I1Jpll oxvbX+IzfmySBdonK78ft83c24ulodLiG5GRIpFj8qfQ+DnphyIvPCCt/XGfzckNb10Y /I88uArMYruMAg4HX1HqVVYqs1zQtU+TPlN2VPTb6AYOgzkFkXmvo8IE/AWHuU/xkBNj HKcfeuk7e0frqrrtowst+tM+TwpBBvSRPlr7SeiO18fBKXPJ2uEdmDPzmXcWlKScKeuL gCb+xrs9Tr0ij2tyOGxnU2GorcEo1bKndLraIftHck27EvBVjJ2UiYH2SUclaoa5Iau8 AUsw== X-Forwarded-Encrypted: i=1; AFNElJ/GuXQlFdcMiH1p70zHh/xA4NbA03/yWqt1ZIUJHElTMvgFD3KK4T/S92K55gKDYcWeIm1cOr9Sgh5AA2A=@vger.kernel.org X-Gm-Message-State: AOJu0YwXAbdEX/xFsl3gmiIBAZZlMpsVWPMZrDvcTVhXAeNJIBrH/uby HbhEV7ZCCcWendW84uUzrqtbqslbAq3Xz9NlEsQcDy8B2D9Rr4Jnxn9C X-Gm-Gg: AfdE7ck46NTEPf+FyHEzVCiO3PrnSMnoDtF7Ci2vlpqF9wP3/yi1vL5r22rU6jc2BAX eZZa0560PncXgMSWHmqaAnkOFuVVPsZIamKwpsq+Lmc8D65UfJXW/wdXyFIe+iaSTsOKr4caNuu c2jXgduKZ4DrMNR0Hx7GADtbqFzJfqoKTiVQyGbd62wNDWgoGNX+fBEBF24d9qLveC/oV+uZNVX xonKldnFXKlkSNZRrZghiOev6JMb6cojoJE1TXruAshD+RSy3mdSQco5Azur16EUIa7SDvB8XOG vHTEUnWpVLsinrxOip38nT15CfoSzk/wfIDBZUfS2rs1eY/rnnxdiZsKm+8xSdd18Ky4r+ncQxR EIkAn3HDFUfLkec0zRqtHKKmGz2qJBVl2k5g+hxeXpfqYaogUva+sVSlJJrCnglUawwrS7oXCO7 L54tVgMGl4GSOVXAEVPAoGzeeN6wIm18Fagu5DvEgl0GGJ4Puo7pQQxFltz9uqT8BvGRgAP17hl da5ILQSG6N8k4Ii X-Received: by 2002:a05:690c:4d48:b0:7ff:f42:4f99 with SMTP id 00721157ae682-7ffc783cd6fmr6177127b3.40.1781728797350; Wed, 17 Jun 2026 13:39:57 -0700 (PDT) Received: from alsa-dev.int.suenodeluz.com.do ([74.244.193.74]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7fcd00da747sm55671227b3.7.2026.06.17.13.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jun 2026 13:39:56 -0700 (PDT) From: Frank van de Pol To: tiwai@suse.de, perex@perex.cz Cc: fvdpol@gmail.com, ramiserifpersia@gmail.com, rmxpzlb@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 0/1] ALSA: usb: Add support for Reloop Jockey 3 DJ controllers Date: Wed, 17 Jun 2026 16:39:36 -0400 Message-ID: <20260617203937.1273852-1-fvdpol@gmail.com> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Hi Takashi, Jaroslav, and the ALSA community, After being away from active ALSA development for some 25 years or so, I am happy to submit this patch to introduce a dedicated driver supporting the Jockey 3 series of DJ Controllers made by Reloop (specifically covering the Master Edition and the Remix variants). I initially evaluated the feasibility of integrating the required logic to handle the non-standard proprietary Ploytec framing protocol into the standard USB-audio driver via quirks. However, doing so would require introducing numerous hardware-specific exceptions throughout the core layout, adding significant complexity. A clean, isolated driver subdirectory provides much better long-term maintainability without cluttering the existing class-compliant architecture. Following up on the feedback received from the v1 submission last week, I have revised the architecture to address locking consistency, lifecycle safety, and stream verification flags highlighted during review. Changes v1 -> v2: - Migrated URB lifecycle management to use standard usb_anchors. - Revised and hardened URB buffer memory allocation constraints. - Addressed locking consistency, scoping issues, and static analysis warnings raised by Takashi and the Sashiko automated review. - Implemented dynamic PCM rate constraints when a stream is active. - Implemented full MIDI Running Status support for the control surface. - Refactored several large code blocks to improve overall readability. - Added clarifications on hardware specific quirks and codec format. - Optimized struct jockey3_chip layout for padding and locality. I have successfully validated and stress-tested this driver across three distinct hardware architectures to ensure robustness regarding DMA, timing, and memory alignment: - x86_64 (Standard PC desktop environment) - armhf (32-bit on a Raspberry Pi 1B -- functional, though tight at 96 kHz) - arm64 (64-bit modern SoC environment on a Raspberry Pi 4) I look forward to your review and feedback, and I am more than happy to make further architectural adjustments as required. Best regards, Frank van de Pol Frank van de Pol (1): ALSA: usb: Add support for Reloop Jockey 3 DJ controllers MAINTAINERS | 7 + sound/usb/Kconfig | 1 + sound/usb/Makefile | 1 + sound/usb/jockey3/Kconfig | 19 + sound/usb/jockey3/Makefile | 3 + sound/usb/jockey3/jockey3.c | 1025 +++++++++++++++++++++++++++++ sound/usb/jockey3/ploytec_proto.c | 240 +++++++ sound/usb/jockey3/ploytec_proto.h | 53 ++ 8 files changed, 1349 insertions(+) create mode 100644 sound/usb/jockey3/Kconfig create mode 100644 sound/usb/jockey3/Makefile create mode 100644 sound/usb/jockey3/jockey3.c create mode 100644 sound/usb/jockey3/ploytec_proto.c create mode 100644 sound/usb/jockey3/ploytec_proto.h -- 2.47.3