From nobody Mon Sep 28 05:45:37 2026 Received: from mail-lf1-f42.google.com (mail-lf1-f42.google.com [209.85.167.42]) (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 5EF1E48C406 for ; Tue, 25 Aug 2026 17:55:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787680507; cv=none; b=tg7LJTaLJueEr6OO43HUl8abU1qGjluXg4GoG956L28HyqHACXyZEY6T3/X8b/jiqUD3fUKh+gQ/Aa4KavKyyKWmDZRCTk+7yMykit8+1hnDW704Huuvx9ewlOk82JdpvXsuIXI2PjqQqiGiShF/PDn52eIX34v8nEbON26KjGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787680507; c=relaxed/simple; bh=eM70yci7T0XXrbCyPf44QOYIULvwrzpMlDydY+jjt48=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=IWTEP8Ssgu5M6ag/qcpHCpIvQ8GJcHTjASzm1msVitcSBWOjKKdXlH3+GWs7aqNsvWaWvynJk6Q3gCbrhc1tLHb+CVJJynY57IypKrJB9wSoYKtnyNCT9HtgA0lfm+kjtBBo/0aEsbW6WkpJS+noyDKkQ0m2PulGOb0nsW5YcC8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=azeron.eu; spf=pass smtp.mailfrom=azeron.eu; dkim=pass (2048-bit key) header.d=azeron.eu header.i=@azeron.eu header.b=sEz9p/OK; arc=none smtp.client-ip=209.85.167.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=azeron.eu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=azeron.eu Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=azeron.eu header.i=@azeron.eu header.b="sEz9p/OK" Received: by mail-lf1-f42.google.com with SMTP id 2adb3069b0e04-5b4a0e5aefeso23214e87.3 for ; Tue, 25 Aug 2026 10:55:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=azeron.eu; s=google; t=1787680503; x=1788285303; 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:content-type; bh=soMEoVv6tn12vff+rAWgJ/AfY6AmARUfXxN5G2m2LGs=; b=sEz9p/OKafVLE5rKxDSNQuE8tqIgRoxQoO4sU/YJlOtZ4eJmK6odiIT4YBhMkp0EWd W0h/2yXafTB7dVZnKXRO7fl3x68VmQLDmQs5S9IECVsvGAlsxsyabfDtWwUknWsZpxTq NQ7UT2x5rBS/XPPlNKD6QmLX4UC3fs6KI2LmASAMhlv2xK+eKg/K4LqTWzGBpbc0Ubkn C0LxKu0Up2osjZ79G/VZAIzgXg88e1M9u4iZzo4/jJKxDZSubJ8dnbo9N/4rw49wC3nz N628ROXWWxdyCMWO9ItN8AxvChYh8h+PT4H4W4Upo/ElNkUW7eN5Efj7KMcrhalhmlos HO1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787680503; x=1788285303; 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:content-type; bh=soMEoVv6tn12vff+rAWgJ/AfY6AmARUfXxN5G2m2LGs=; b=oR3dTsSVVm3dXyqVvWKOZJmgMfM9dCXhjIbiDPYnUNJvXAo2wI9Jouz2tqLpmaUE/Z 4CcFGOXGsNCfsKI2E5zCiztJhkuntmAUUVEq+UFV3rRgN9nmTNW4jz/er0GYAOJyvZjN 4YzQIhyZuzTEj9+zQ/4rm1pGzeEi49sdrILKwJd60tkfPJpwgM4IZvp6Gx45ARjqQXKy ApVqgqe3nnRd8F2qLrqJT9dyzXufS8TZ4Zl10IVsgo9tI+oV0ejgNpi1Kz9BzQHDuIjh gPv4tqdv5HIjSyRdgrRFFEaRf37zNCteyFKYvmsLRtzaInL4187MzXW4JS8e8otomLmP fvBg== X-Forwarded-Encrypted: i=1; AHgh+Rq/lSEZEgjgiwKrc38a+9bmDVtEqPNw6R57fJ+LyvTwYeCpSZFXTJqGVeolxhftxRFNcYXMxEzimOTG7DY=@vger.kernel.org X-Gm-Message-State: AFuF++lGeiWk2RvLQ0+IVzWTRwLq1b2wNhuMNSlE0a7SZ954KTVjttdY J9rJdMg+4Dc26XQLu4PboLt3BSVCQ1bkKInX58w2o40DBXOp45Eg/yYn589xsl1i+iY= X-Gm-Gg: AR+sD13IAOsAgFbUSf9oPcYUSAOzLdldmXnTnVkNXyCKCxLKqjuQs6TEm9GpoLjLmd0 V1s7XTzf4s4Ca8NJXSIKOsnrvyZim5sp/zxeCTvA2eWMchbuI9VXoXLcAxnjgkiVQRFzxkk5T1o 1rS61RANzmjvRSVfvGChq6KL8muaRErvMvF8SH3FQkxeOhP4XRtFcz9QB+2ymd+2cWhY2W9nvI7 URCx+dmqjyvcdwhVPNKNSM5DwtbhieLaNvqBnFCQALT9r3etZTV0k1yBHuU3/YS8R06YXALq1fQ ojt3xBF7/HltHDSiDt5s9fV5DVjF0yU5SosFBRrY6HIXf01rqeMEytfVBClH2Gm2yRrN+P0MGGi eHsjGogoD3Ki886tlkcXIP5CVFuCo9abZ+SrAdZwmMkDNHal2iAQacWNa2AsbY2G1opYMmxRTSL cq6hY9VrAsAdaMJoULlMflmS08ioc8yBchB8+ey0Y/hHwC6SSJpcQmvKnyg3WzWDJT4EorVFAHy Nd9GuacIOha4w== X-Received: by 2002:a05:6512:a93:b0:5b0:1760:fabe with SMTP id 2adb3069b0e04-5b48b894c0fmr7679885e87.15.1787680503022; Tue, 25 Aug 2026 10:55:03 -0700 (PDT) Received: from nixos.apollo.lv ([91.105.104.113]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b4a41b7390sm82711e87.69.2026.08.25.10.55.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Aug 2026 10:55:02 -0700 (PDT) From: Roberts Kursitis To: Dmitry Torokhov Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Roberts Kursitis Subject: [PATCH v4] Input: xpad - add support for Azeron devices Date: Tue, 25 Aug 2026 20:54:41 +0300 Message-ID: <20260825175441.173415-1-roberts.kursitis@azeron.eu> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Azeron controllers (Cyro, Cyborg, Classic/Compact, Cyro Lefty, Cyborg II and Keyzen) present a standard Xbox 360 controller interface, so they work with the existing xpad driver once their USB IDs are added. The 0x16d0 vendor ID is a shared block, but this is safe because xpad only binds interfaces that match the Xbox 360 signature. Tested with an Azeron Keyzen. Signed-off-by: Roberts Kursitis Cc: stable@vger.kernel.org --- v3 -> v4: - Rebased on current dtor/input next. - Dropped the FLAG_NO_LED / FLAG_NO_RUMBLE quirk. Testing an Azeron Keyzen showed it accepts the LED and rumble packets without the -EPIPE stall assumed in v3, so the quirk is not needed. The patch is now just the device-ID additions. v2 -> v3: - Moved the 0x16d0 entries after 0x1689 to keep both tables sorted by vendor ID. drivers/input/joystick/xpad.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index feb8f368f834..ed6ae7bf0d3a 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -292,6 +292,12 @@ static const struct xpad_device { { 0x1689, 0xfd00, "Razer Onza Tournament Edition", 0, XTYPE_XBOX360 }, { 0x1689, 0xfd01, "Razer Onza Classic Edition", 0, XTYPE_XBOX360 }, { 0x1689, 0xfe00, "Razer Sabertooth", 0, XTYPE_XBOX360 }, + { 0x16d0, 0x1103, "Azeron Cyro", 0, XTYPE_XBOX360 }, + { 0x16d0, 0x113c, "Azeron Cyborg", 0, XTYPE_XBOX360 }, + { 0x16d0, 0x1192, "Azeron Classic/Compact", 0, XTYPE_XBOX360 }, + { 0x16d0, 0x1212, "Azeron Cyro Lefty", 0, XTYPE_XBOX360 }, + { 0x16d0, 0x12f7, "Azeron Cyborg II", 0, XTYPE_XBOX360 }, + { 0x16d0, 0x13ea, "Azeron Keyzen", 0, XTYPE_XBOX360 }, { 0x17ef, 0x6182, "Lenovo Legion Controller for Windows", 0, XTYPE_XBOX36= 0 }, { 0x1949, 0x041a, "Amazon Game Controller", 0, XTYPE_XBOX360 }, { 0x1a86, 0xe310, "Legion Go S", 0, XTYPE_XBOX360 }, @@ -533,6 +539,7 @@ static const struct usb_device_id xpad_table[] =3D { XPAD_XBOX360_VENDOR(0x15e4), /* Numark Xbox 360 controllers */ XPAD_XBOX360_VENDOR(0x162e), /* Joytech Xbox 360 controllers */ XPAD_XBOX360_VENDOR(0x1689), /* Razer Onza */ + XPAD_XBOX360_VENDOR(0x16d0), /* Azeron controllers */ XPAD_XBOX360_VENDOR(0x17ef), /* Lenovo */ XPAD_XBOX360_VENDOR(0x1949), /* Amazon controllers */ XPAD_XBOX360_VENDOR(0x1a86), /* Nanjing Qinheng Microelectronics (WCH) */ --=20 2.54.0