From patchwork Mon Apr 18 11:40:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Rojtberg X-Patchwork-Id: 564193 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 446B2C433FE for ; Mon, 18 Apr 2022 11:41:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234513AbiDRLoX (ORCPT ); Mon, 18 Apr 2022 07:44:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229882AbiDRLoW (ORCPT ); Mon, 18 Apr 2022 07:44:22 -0400 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CB2BDFFD for ; Mon, 18 Apr 2022 04:41:43 -0700 (PDT) Received: by mail-wr1-x42c.google.com with SMTP id q3so17647669wrj.7 for ; Mon, 18 Apr 2022 04:41:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N4wLNEikvkbYw1qs8xHnr+uPsOxIOobzb0HAW32iGvA=; b=MuSRQBYfxXyCdxF0utiMRDx+UjRBFaEn+aPpinZguHC9rv19xuuJlAwgoQJ7tEYGll a/3BUYtg15vTmRkv2exVL5GAoOsXjYr9IR5csQpJgXtgTJO2Qir+FAv3dFoAfMD6stn/ V6DeqAEl/CuQ8JKaYHPdm8exdQJ9S9MCExK2dSW14GeBjwsFdz9c+LDMtskt1dyGlFsv 0FbJlUvGvTTrdQ3baAGjBIhki+OVEixG5H9WK7YY7Nr11ODhOAMVCIqnZmehrseJK+v3 R/Lm8v996rCmFYII6n9Iuw+ScdCLul+gC1xOMYCCCbpuWOmvDVGxjsriR4vozzUBKlTp rR3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=N4wLNEikvkbYw1qs8xHnr+uPsOxIOobzb0HAW32iGvA=; b=0B6cK/1VWHvQTsfnCLZWncOyKbvHhtn/0hP14XBKMg2wDggoHzWpjl2rls7x2aMG+S GHbh+cf9Ts3BImVZHsoFMXpvNLGHpnYlqoCO8bMDs4iGPInHP+LvIERUBWgjcF1u0zlw djzySbs5ZkGIoP/X40dTUuJ2nAeRZbHCDvkRtuwwj1xl+Mwz1gq11NlESRqQ16AvpRdg qJdq1PwAv0KAObSIBjMl7osHYFeBNjavU8rQwbGsIFJ+fV/9zqwp5Iexzo16y5xF8QAN G/wf41TSFm2ICuC2CAfwwAqoybDaDDGjJLsTvkKubHdXjrsyB9vP2jKiem4twtaf+16K PrIg== X-Gm-Message-State: AOAM5327Ev+nAWRhajmDsxGlQSh+Uyr06ouRxeiM1gFPwQhFjYWjoTia A5p4nhB3JaZXjHXkHUHkR3FigRInpKqR9A== X-Google-Smtp-Source: ABdhPJzZ06t7sD4618vjJ3uMUNSEYDh6XO0SC0dE2v97S+H1Kn685LciG86IXoEnHNoatAag5Cbh+g== X-Received: by 2002:a5d:59a2:0:b0:204:20d9:a5b9 with SMTP id p2-20020a5d59a2000000b0020420d9a5b9mr7772372wrr.560.1650282101957; Mon, 18 Apr 2022 04:41:41 -0700 (PDT) Received: from deepwhite.fritz.box ([2001:9e8:2205:7500:31a3:8b23:14e3:7ccf]) by smtp.gmail.com with ESMTPSA id b1-20020a5d40c1000000b00207b49d3023sm10007211wrq.44.2022.04.18.04.41.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Apr 2022 04:41:41 -0700 (PDT) From: Pavel Rojtberg X-Google-Original-From: Pavel Rojtberg < rojtberg@gmail.com > To: linux-input@vger.kernel.org, dmitry.torokhov@gmail.com, gregkh@linuxfoundation.org Cc: Pavel Rojtberg , Jasper Poppe , Jeremy Palmer , Ruineka Subject: [PATCH v2 1/3] Input: xpad - add supported devices as contributed on github Date: Mon, 18 Apr 2022 13:40:20 +0200 Message-Id: <20220418114022.23673-2-rojtberg@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220418114022.23673-1-rojtberg@gmail.com> References: <20220418114022.23673-1-rojtberg@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org From: Pavel Rojtberg This is based on multiple commits at https://github.com/paroj/xpad Signed-off-by: Jasper Poppe Signed-off-by: Jeremy Palmer Signed-off-by: Ruineka Signed-off-by: Pavel Rojtberg --- drivers/input/joystick/xpad.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 53126d9..b9c2e58 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -244,6 +244,7 @@ static const struct xpad_device { { 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE }, { 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, + { 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX }, { 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX }, { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX }, @@ -260,6 +261,7 @@ static const struct xpad_device { { 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX }, { 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 }, { 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 }, + { 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE }, @@ -325,6 +327,7 @@ static const struct xpad_device { { 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 }, + { 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 }, { 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE }, @@ -334,6 +337,8 @@ static const struct xpad_device { { 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 }, { 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 }, + { 0x2563, 0x058d, "OneXPlayer Gamepad", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE }, { 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 }, { 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX }, { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX }, @@ -429,6 +434,7 @@ static const struct usb_device_id xpad_table[] = { { USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */ XPAD_XBOXONE_VENDOR(0x0738), /* Mad Catz FightStick TE 2 */ XPAD_XBOX360_VENDOR(0x07ff), /* Mad Catz GamePad */ + XPAD_XBOX360_VENDOR(0x0c12), /* Zeroplus X-Box 360 controllers */ XPAD_XBOX360_VENDOR(0x0e6f), /* 0x0e6f X-Box 360 controllers */ XPAD_XBOXONE_VENDOR(0x0e6f), /* 0x0e6f X-Box One controllers */ XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */ @@ -450,6 +456,8 @@ static const struct usb_device_id xpad_table[] = { XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA Controllers */ XPAD_XBOX360_VENDOR(0x24c6), /* PowerA Controllers */ XPAD_XBOXONE_VENDOR(0x24c6), /* PowerA Controllers */ + XPAD_XBOX360_VENDOR(0x2563), /* OneXPlayer Gamepad */ + XPAD_XBOXONE_VENDOR(0x2dc8), /* 8BitDo Pro 2 Wired Controller for Xbox */ XPAD_XBOXONE_VENDOR(0x2e24), /* Hyperkin Duke X-Box One pad */ XPAD_XBOX360_VENDOR(0x2f24), /* GameSir Controllers */ XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */ From patchwork Mon Apr 18 11:40:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Rojtberg X-Patchwork-Id: 563227 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9AE5C433F5 for ; Mon, 18 Apr 2022 11:41:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229882AbiDRLoX (ORCPT ); Mon, 18 Apr 2022 07:44:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232287AbiDRLoW (ORCPT ); Mon, 18 Apr 2022 07:44:22 -0400 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 249D4120AF for ; Mon, 18 Apr 2022 04:41:44 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id w4so18259490wrg.12 for ; Mon, 18 Apr 2022 04:41:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X2+v/mdVE6+emb+sfDYM1P2xslwLGC8W8jEMB5qHBpQ=; b=J/kQIxXlNOm0eRB1mcb6b2VElo4CbIJprCeSgVIN9HaNg+UwkM3riJ6SqcHjCO4C6S RHvIp6GWCSMv/s9JLzBZfRApxmqFZ/sUMuA1L5k8ClqeSwqyYXCPuX4prCiID/PcfmPL /W71d1oWv6Atg+Zu9je6JHJs8O9oPWMnffP5TK1LvMvx0NE4VzRIMj2sODX5tQ4DENqi fbybCX1HSOiowYldVfegab+WbZpqUWQ71ucs4KF6WXCrhbgGA6NNla7AAuvyoDp9ZmGM vF43IjAMxreqZ9GRp5rpoQBwA9xO0GeHC2u3MUHQI05NIUUJkTdXax21giIskFxr3kg0 KyHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X2+v/mdVE6+emb+sfDYM1P2xslwLGC8W8jEMB5qHBpQ=; b=rdqdPpe7sEtD3WVHfCnW8tyHawp+/OoxJzamdUqjKMbX/P6z9eZGcCSIWFqdVq6w/3 O8882WlMLfn4LeCn4XFHid/oKt0MD4vOO8Xcj97FZNzpE0ys+Oz8mnUT/g0XcFj5jf8R Y1xlN0JKR+UgUlNhhKld7jjNRd/QH0l+Iz7n9qGTVp8oORcPfyHLTT9fp511XW0fniZ3 2xjZKbXQZsxQj7s+Agj72Fi5Z8ZjrGwXSom8SlDztjLu+7uXI96tXhesGgqIwe3SBAFf 0jGhWiUMwaIIj3TfgHMCWj5ixygkzx38+w9tR2WjJAM2rQYrqyxuGB5KMxivwU6SdaTf 7Y4g== X-Gm-Message-State: AOAM532IBhnK4PwWYb19Hmv1kuCosK5CtHQYwMBLUNkN2vudJ3AlCX19 qknx2o6n7iZO83uTpjqImgs8ljtTAXmvgA== X-Google-Smtp-Source: ABdhPJz407zauzQOeAIo0mlXPYFMQZ5dalwewU4QjFRY1Me8vgBCTmGROiOobgNBAiVTFaPafWYzmQ== X-Received: by 2002:adf:d1cb:0:b0:20a:880b:13d2 with SMTP id b11-20020adfd1cb000000b0020a880b13d2mr7198449wrd.323.1650282102660; Mon, 18 Apr 2022 04:41:42 -0700 (PDT) Received: from deepwhite.fritz.box ([2001:9e8:2205:7500:31a3:8b23:14e3:7ccf]) by smtp.gmail.com with ESMTPSA id b1-20020a5d40c1000000b00207b49d3023sm10007211wrq.44.2022.04.18.04.41.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Apr 2022 04:41:42 -0700 (PDT) From: Pavel Rojtberg X-Google-Original-From: Pavel Rojtberg < rojtberg@gmail.com > To: linux-input@vger.kernel.org, dmitry.torokhov@gmail.com, gregkh@linuxfoundation.org Cc: Cameron Gutman , Pavel Rojtberg Subject: [PATCH v2 2/3] Input: xpad - fix wireless 360 controller breaking after suspend Date: Mon, 18 Apr 2022 13:40:21 +0200 Message-Id: <20220418114022.23673-3-rojtberg@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220418114022.23673-1-rojtberg@gmail.com> References: <20220418114022.23673-1-rojtberg@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org From: Cameron Gutman Suspending and resuming the system can sometimes cause the out URB to get hung after a reset_resume. This causes LED setting and force feedback to break on resume. To avoid this, just drop the reset_resume callback so the USB core rebinds xpad to the wireless pads on resume if a reset happened. A nice side effect of this change is the LED ring on wireless controllers is now set correctly on system resume. Signed-off-by: Cameron Gutman Signed-off-by: Pavel Rojtberg --- drivers/input/joystick/xpad.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index b9c2e58..2a45733 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -1980,7 +1980,6 @@ static struct usb_driver xpad_driver = { .disconnect = xpad_disconnect, .suspend = xpad_suspend, .resume = xpad_resume, - .reset_resume = xpad_resume, .id_table = xpad_table, }; From patchwork Mon Apr 18 11:40:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Rojtberg X-Patchwork-Id: 564192 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5AC2BC433EF for ; Mon, 18 Apr 2022 11:41:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236355AbiDRLoY (ORCPT ); Mon, 18 Apr 2022 07:44:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232287AbiDRLoY (ORCPT ); Mon, 18 Apr 2022 07:44:24 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD0D1DFFD for ; Mon, 18 Apr 2022 04:41:44 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id m14so18286982wrb.6 for ; Mon, 18 Apr 2022 04:41:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Tl/kRVRuiJ42P+3vyybYBp2N1GhcwJ6H+RfpOsqlCJo=; b=brOL86SqabVVN+aIfhdMEj4XqTHyXMSEuTGE3/NvBD0CoLJ2ODREsogBRuyZi094WR 32VQIm06SbuL+091a471/+TalVPVqhqzk2pTp3PnLJ1ucFtmlKehNrZUnnSrmwZnysrT yrIr5mwOa1p20d5lJRIWqj7rafT8Qn48Ri2IC2B/Z/I4ubzynS6qXulOoBLMYGC2tNN4 /US0IIMIPt0ZtLJsoTtEWrFjCBUd8JjW57qpmRirRWaFZRID/O0J/JmT9GgAyw5U/7sb TomZHCilRK4ijWZkhuxh7WDGiZHA+DoysaLOd+SmPil5xeDfr222bxwJNSYCtRPlTgim 4uaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Tl/kRVRuiJ42P+3vyybYBp2N1GhcwJ6H+RfpOsqlCJo=; b=SzkwEYYUPSMXfDEAaZ0yvhU+tOkgBW0WlJzjq8MJtGrUov5nSnbsY9ShT1ht+Li+MA MEY/x6iQYGpcxW1J61UDTzF8dowIIPQQeWv/zL6l5ER91C3pKnPHuPmTDGLY/jTYHPwS rgIzG0BtQemjPZ7e0JX7zrR5Q+aohomkMSZNXJKvdc1v084BDeMBtpN2IDmP3bp3jYxD QarhmSQeo9CKusaT24OnnyJpfNwWFyW56LGXcN3ELF7PH80a5rO/QjhBmHuT6SmIJk5A VaQB5HjwffLw88dbkgMg6tqvSjt+9UmGdAPNiGygm6PpfhJJyoC0N7mbrYvgbyhqayJa eyfA== X-Gm-Message-State: AOAM5338ClbcfNtKkzimKnERhxHt7YIrYMcJdy2wlBKfREBIMbFY9Spw SbRI0nfj1U7R742iFu3FDFHWUw39lefGyw== X-Google-Smtp-Source: ABdhPJyLaSf5batHwPOaOlbZckFTN71TRFtHf8OAADvKqQGRS1st2gOzjVCzlJE799MsWrMNxv2GpQ== X-Received: by 2002:a05:6000:156a:b0:20a:99bc:987f with SMTP id 10-20020a056000156a00b0020a99bc987fmr2815524wrz.569.1650282103405; Mon, 18 Apr 2022 04:41:43 -0700 (PDT) Received: from deepwhite.fritz.box ([2001:9e8:2205:7500:31a3:8b23:14e3:7ccf]) by smtp.gmail.com with ESMTPSA id b1-20020a5d40c1000000b00207b49d3023sm10007211wrq.44.2022.04.18.04.41.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Apr 2022 04:41:43 -0700 (PDT) From: Pavel Rojtberg X-Google-Original-From: Pavel Rojtberg < rojtberg@gmail.com > To: linux-input@vger.kernel.org, dmitry.torokhov@gmail.com, gregkh@linuxfoundation.org Cc: Santosh De Massari , Pavel Rojtberg Subject: [PATCH v2 3/3] Input: xpad - Poweroff XBOX360W on mode button long press Date: Mon, 18 Apr 2022 13:40:22 +0200 Message-Id: <20220418114022.23673-4-rojtberg@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220418114022.23673-1-rojtberg@gmail.com> References: <20220418114022.23673-1-rojtberg@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org From: Santosh De Massari Newer gamepads turn themselves off when the mode button is held down. For XBOX360W gamepads we must do this in the driver. Do not use BIT() macro for consistency within the file. Signed-off-by: Santosh De Massari Signed-off-by: Pavel Rojtberg --- drivers/input/joystick/xpad.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index 2a45733..ca4efa5 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -89,6 +89,11 @@ #define XTYPE_XBOXONE 3 #define XTYPE_UNKNOWN 4 +/* Send power-off packet to xpad360w after holding the mode button for this many + * seconds + */ +#define XPAD360W_POWEROFF_TIMEOUT 5 + static bool dpad_to_buttons; module_param(dpad_to_buttons, bool, S_IRUGO); MODULE_PARM_DESC(dpad_to_buttons, "Map D-PAD to buttons rather than axes for unknown pads"); @@ -619,11 +624,13 @@ struct usb_xpad { int pad_nr; /* the order x360 pads were attached */ const char *name; /* name of the device */ struct work_struct work; /* init/remove device from callback */ + time64_t mode_btn_down_ts; }; static int xpad_init_input(struct usb_xpad *xpad); static void xpad_deinit_input(struct usb_xpad *xpad); static void xpadone_ack_mode_report(struct usb_xpad *xpad, u8 seq_num); +static void xpad360w_poweroff_controller(struct usb_xpad *xpad); /* * xpad_process_packet @@ -775,6 +782,23 @@ static void xpad360_process_packet(struct usb_xpad *xpad, struct input_dev *dev, } input_sync(dev); + + /* XBOX360W controllers can't be turned off without driver assistance */ + if (xpad->xtype == XTYPE_XBOX360W) { + if (xpad->mode_btn_down_ts > 0 && xpad->pad_present && + ((ktime_get_seconds() - xpad->mode_btn_down_ts) >= + XPAD360W_POWEROFF_TIMEOUT)) { + xpad360w_poweroff_controller(xpad); + xpad->mode_btn_down_ts = 0; + return; + } + + /* mode button down/up */ + if (data[3] & 0x04) + xpad->mode_btn_down_ts = ktime_get_seconds(); + else + xpad->mode_btn_down_ts = 0; + } } static void xpad_presence_work(struct work_struct *work)