From nobody Mon May 25 05:14:38 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.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 0CD5136DA0D for ; Mon, 18 May 2026 16:06:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120416; cv=none; b=h2mKN7baXDhaZUlhf1yEgudrUJmgt6jJd62GAh3fYUGCZnq3QO0p8dArmcIzhBHjl7UPDrYwuPfSV9R5rzvMBM6v0sus4PPzufgoTqtsL4QOo7ZkqmtY0hfskZpLveaxUBuHsjN/abZj6MXkOH9VH86+tN+LCNWz6si+GZwdKUI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120416; c=relaxed/simple; bh=9QcodduUYoiO9xmozU7b+/LP8U45PqdyifYUn4hP0Dg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eOIUfdY5uIKAqWm0YgRJ9sF5UrAI3TLHHEOFWsJPU3JkM8Q04vaH/KA2lT3P6vfoeiYo/9VnxT/HG8RUVd3+0YBowrq4fj90WhaayvrOQjo8wIiuLJce/VJ2NVPec2RScdcBnG0rt3rwaNvcuNFHpi700WXIPI731N+YYErLeEY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=E10I7Qys; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="E10I7Qys" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488a14c31eeso15177205e9.0 for ; Mon, 18 May 2026 09:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120403; x=1779725203; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=D7k6MZW9OnF2C3c09sOCruzHTTGqDl760I5gxL0a0c8=; b=E10I7Qysl/+KTJbCUzGbzTKL8AmRXgQYdlM+MlP71cYvxELQQV7lJF/Z9dUa1d3pgf fsPrkmKJKsm26aeJyE+hn3oORm4A0wurA8UPSQapdaijJKAYwFXdhMZCAqrBCyl4SYsR icAz7zIN19ZV7s8rzq20iJVEs08BSAY9d/CsBoKGrcwsIW0+kJuOAUtEe50JeJW9qi8U duoUeUDlYZ6WT2E2Mfhve+fBfbRR4nKLDa2/7h18FdqUeGIY645SCCyvqHuF4YnRPdpq DCsqYgcTJemiwK3FImB6tTgIuA95LKdjg/lAMu5dON1Xt3kZU33rww/5CtJ096zdvrL2 LctQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120403; x=1779725203; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=D7k6MZW9OnF2C3c09sOCruzHTTGqDl760I5gxL0a0c8=; b=N8sJktk0DbgXuE0mezSpPODKo6yGwWFdKtY5cVbTXg4t2XByX6xSRSOcozC+1dwYAI wHbqPywBqIqDsedlu5Afa0eggUhQ8HQ8TrDEXHu/BfC92ODIFCFgnD7ItC1M7N88OqKP HUnDPgikXOJC7Ssu7di00PP0K6p6VRCcE2pIrqadhDyouLOayTHqammyzFvirkNJSx2M 6CmKR0QDnikEuP8p0FmfUihthD7ejzkvkr5rMet9hy5tHGXJd/KMCeYi9X7GNNcV1Zdx 0FdJ7mKOjroVJoaK7IKUDfq4Izm1V8V4VSalOgiUOv57tSQOFkyY6NQ9LesHjROvaHVS tf2A== X-Gm-Message-State: AOJu0YwksNiHsjeOIlRsYAGLgwM5uB8m8j5XCHn5Id0pPNppsk7u5zoM msBdW5k8Vm7KctyNeb9XYUIVumeMggkeeLIg/D3ox48LabX5OPPpn0lVqJVp2x1pyNA= X-Gm-Gg: Acq92OGYsfQa7JuiI56c15ncCncxtTLgrI/M50rscmbHBOsP4w2UXURKY2LZtYGiF35 oiQM/qmBNY4oTsLK7pRZ8w+iYLfZ5mVq3yWqr85GpbTWgCBEdfs5h9e41Us9UdVg8Q5GaeVzbJL n2iC2SfQJ/HB0bRERxb8NvID4GU9KGL5JddZ3UG+epQ4NGWzWY+MAiGOtfwmXvOnJuZH6rVNIiJ 48GMATV4PsiDxZ7zPFNSrOnofLBakQoMdmZDCI8MxP9xYm32D+uOmN74tVTKkChtX2O9+q2wXZc +2Rm1f3+El2MVEppVGUu8i1+zP6hjmd3pZT+4JR6Kei2WG/rnmDnOe/p13Q+8Nxj/3rGHaLt8Dj 2ninkcCt0dOLfUwGL2LtKmobXeWQJ2YDtd+Gcu4qYcsNjKoXbgCBjZ/mlspsMfvYkIas/O/5to+ u/2x2X2/oRFJ0vuzKPDSQhb8uJJG7CqF2Em1HNaI/k X-Received: by 2002:a05:600c:c096:b0:48a:563c:c8d6 with SMTP id 5b1f17b1804b1-48fe5fd4b51mr181557175e9.7.1779120403077; Mon, 18 May 2026 09:06:43 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:42 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:20 +0100 Subject: [PATCH 01/11] HID: hid-input: use named initializer for 'hid_battery_quirks[]' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-1-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=4353; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=9QcodduUYoiO9xmozU7b+/LP8U45PqdyifYUn4hP0Dg=; b=b7A8ps653haNV4Lc4017SElHtrNc1QzVoeta1NE5cmn5BCLICOao+sofCqYHW5qIznBZes91P uxJWN7IOntbA9SIazuihtngmrhZYw/o+XMknYuy5gby8mbs95xwtHnR X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= This makes the code a little bit more readable and consistent with other drivers in the HID subsystem that assign the 'driver_data' field in the 'hid_device_id' struct explicitly. While touching the 'hid_battery_quirks[]', align the list terminator entry to use a space between the curly braces for better matching the layout of the other entries. It was confirmed that hid-input.o pre/post the patch are equal using diffscope. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-input.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index d73cfa2e73d3..50ee03508806 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -359,49 +359,51 @@ static enum power_supply_property hidinput_battery_pr= ops[] =3D { static const struct hid_device_id hid_battery_quirks[] =3D { { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO), - HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE }, + .driver_data =3D HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE = }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI), - HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE }, + .driver_data =3D HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE = }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI), - HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE }, + .driver_data =3D HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE = }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, - USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO), - HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE }, + USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO), + .driver_data =3D HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE = }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI), - HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE }, + .driver_data =3D HID_BATTERY_QUIRK_PERCENT | HID_BATTERY_QUIRK_FEATURE = }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICTRACKPAD), - HID_BATTERY_QUIRK_IGNORE }, + .driver_data =3D HID_BATTERY_QUIRK_IGNORE }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084), - HID_BATTERY_QUIRK_IGNORE }, + .driver_data =3D HID_BATTERY_QUIRK_IGNORE }, { HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_3), - HID_BATTERY_QUIRK_IGNORE }, + .driver_data =3D HID_BATTERY_QUIRK_IGNORE }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD), - HID_BATTERY_QUIRK_IGNORE }, + .driver_data =3D HID_BATTERY_QUIRK_IGNORE }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_DINOVO_EDGE_KBD), - HID_BATTERY_QUIRK_IGNORE }, + .driver_data =3D HID_BATTERY_QUIRK_IGNORE }, { HID_USB_DEVICE(USB_VENDOR_ID_UGEE, USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO= _L), - HID_BATTERY_QUIRK_AVOID_QUERY }, + .driver_data =3D HID_BATTERY_QUIRK_AVOID_QUERY }, { HID_USB_DEVICE(USB_VENDOR_ID_UGEE, USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO= _PRO_MW), - HID_BATTERY_QUIRK_AVOID_QUERY }, + .driver_data =3D HID_BATTERY_QUIRK_AVOID_QUERY }, { HID_USB_DEVICE(USB_VENDOR_ID_UGEE, USB_DEVICE_ID_UGEE_XPPEN_TABLET_DECO= _PRO_SW), - HID_BATTERY_QUIRK_AVOID_QUERY }, + .driver_data =3D HID_BATTERY_QUIRK_AVOID_QUERY }, { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POM= POM), - HID_BATTERY_QUIRK_AVOID_QUERY }, + .driver_data =3D HID_BATTERY_QUIRK_AVOID_QUERY }, /* * Elan HID touchscreens seem to all report a non present battery, * set HID_BATTERY_QUIRK_IGNORE for all Elan I2C and USB HID devices. */ - { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), HID_BATTERY_QUIRK_DYNAM= IC }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), HID_BATTERY_QUIRK_DYNAM= IC }, - {} + { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), + .driver_data =3D HID_BATTERY_QUIRK_DYNAMIC }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), + .driver_data =3D HID_BATTERY_QUIRK_DYNAMIC }, + { } }; =20 static unsigned find_battery_quirk(struct hid_device *hdev) --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 7E173481DD for ; Mon, 18 May 2026 16:06:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120419; cv=none; b=LMREQ1NemPclNxoGgJl1pJX4WbDpXXQo2whXh8j0oNWL94RiXLCqnAuHXDGoKnqymmtZNsCDULfrrJF2YMrMgMCLHZtgXM7whT+9CByEQ1qNqdnGv7A9pLpy9e3usxve5gv6UC6mKitomgTykCHHPhJcP7RJrIqQnJpBXqMQx+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120419; c=relaxed/simple; bh=/s8zk3gaRYPqRsOFtlWHHwL2R5a2NNjcD/xztJ7yK90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nGBpYAq/zbs7MQPxdNbRiy2bv1CltBhU35CBM3EFBjWdRwONoafzumd5dDFSHI6L8RfA6+kokTNEMNUU0sYy7hqdcnvqHmj8UbLl0eiEzuxLRlq8h394ponNiqXCdmvF01lZp/orzpdb6fmGCnKt8qRrLMYJEgPoeNNFg7plw34= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=eBZsqhZ3; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="eBZsqhZ3" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-48a3e9862f0so14306365e9.1 for ; Mon, 18 May 2026 09:06:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120404; x=1779725204; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xz3A2BTlsP4P2CFBB1UHrBQHakvc+YTHW5gtgqA6Z/Q=; b=eBZsqhZ30JA3u0GLtthd+W+AtxHL8ttubPbAWEtcFXX/2WafGY1I6sqOl/pANBm4mr BKGkldViqMihbiwot6NC5qpB36MfZKJ3/OuwwGUg80vMKtxkbR4ZwXFne7olCzUYtDe+ 1E0PQKos9l0Rntfw1oahewWMI87Z+jWuXcw4GKMFvdJe779pZrIR6PBOFVdtns5u++U+ vjCo8B68sUIuul6fDTuwBleSBLdK2g5RmAb8+lwNjCZgX8H37SlxfQ5ezeUXuHNzxo7v rwS0VLMdMbOvIFR3qyUqMvktEBQD5K1rD2i3QI4nHZ+snRdX/U+Psw4vH7ourPUe1ubl Ks2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120404; x=1779725204; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xz3A2BTlsP4P2CFBB1UHrBQHakvc+YTHW5gtgqA6Z/Q=; b=LON8AN+fxY4TuA/KvVLvwWvfn5yrIu2RS49+FMqSEmsfvWGfo86SoHlwUu5X5Ap8Dw f5TpIYvj66Whq8NQpblv47xokBSXNDperYV4RwgFyXcY3RgCkC/HGQbEzCNOfYy8o/xk uMqoLUbMf/RmuLhdCFwTqt/uzzh60CUhHKU0U6Tyw9rp7bLFi7bvaFq6Q2WaNKe/21nA bEIg74xd3g5leQ+QB/pa9qltzx++VwHS9AgcOrgTyoPdtU1jM6lqRGslN5dTZ1egYM/V 5+2EVIbsJFfksFKfb8+k27yUsdCcTo2Y1yOCfGjUIjyGD/M4PUIIPcaRQKVN5BqUk0Vt BTyA== X-Gm-Message-State: AOJu0YxV7MSlTjWREEE52MJPh9F0I5opOIOsNCfXae7U11zHH3olA3Sx 5PcIMTxsrNyPn/LHw7HkDJjuk/eDhTvFPgb7iRycgFalM7NlllqGTN9kZowX4RjZi1GcskAW00v MDdBQ X-Gm-Gg: Acq92OFAln6Itk6FLMowq8/yFnKJNEG7Ngpg9hA110f38Jgc8yuGK2Tu7mPIUUCIhzx vdXbb8Vc8NcEdTi/NoxSX6nJEGxviq2WJfjGQn09DjQFzJJXLfzPsSznlJ9BfDBelrbaZUMKHdj oCtWTqHJ5CILYCQWAgL+LZINXQuubuSrskmsAOVAgDGHD//Znt5KEbuikxf6Q3/YgzI8Dm7KS3U Inhc1sIxX3pbZVbe742nqdZjZkYbxohBc05FH7oe/TTos2X8U21OL4F/qVyvCYVeQ4L1qtW4XWj yQX7/K5JCOdt6Rn+FXOup7Sh+RC4pec2g4wh/hWwDJI4mgNnDOOFrHLxKBfstA4qJGnUxEXtrlw KSblrWPU+xisE0+WScb9TwZCuqPhHyR0Y4FwO0b1jDgYwAVDRZ5zlUsMiCcfa8y3qcHvu9hSrrf DzrAT7ZWF1+V2wciOzTedyUJDYAXSi0xFTFhXxDxblJRrRchkBRrY= X-Received: by 2002:a05:600c:1595:b0:489:1c0d:c9cb with SMTP id 5b1f17b1804b1-48fd633273emr190014915e9.5.1779120403935; Mon, 18 May 2026 09:06:43 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:43 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:21 +0100 Subject: [PATCH 02/11] HID: hid-quirks: use named initializer in 'hid_quirks[]' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-2-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=44772; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=/s8zk3gaRYPqRsOFtlWHHwL2R5a2NNjcD/xztJ7yK90=; b=COwMOu7Br8n3uNoOvVPcYlNDZ7vy0bANTpHLkiVbzLM0bZWyNMS7zIQI/OlRK3QjpoQwNF0Ux hym8/cH7LGBAL6RoptVO3FdAW9Zd1wWqINCiPW9lVqH4TPVAGTwsjmZ X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= This makes the code a little bit more readable and consistent with other drivers in the HID subsystem that assign the 'driver_data' field in the 'hid_device_id' struct explicitly. While touching the 'hid_quirks[]', modify the terminator entry to use a space between the curly braces as opposed to a 0 for consistency. It was confirmed that hid-quirks.o pre/post the patch are equal using diffscope. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-quirks.c | 575 +++++++++++++++++++++++++++++++------------= ---- 1 file changed, 382 insertions(+), 193 deletions(-) diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c index 9e88c9d6c6dc..36e1ef536cde 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -25,201 +25,390 @@ */ =20 static const struct hid_device_id hid_quirks[] =3D { - { HID_USB_DEVICE(USB_VENDOR_ID_8BITDO, USB_DEVICE_ID_8BITDO_PRO_3), HID_Q= UIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), H= ID_QUIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), = HID_QUIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMI= NG_MOUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMI= NG_MOUSE_DONGLE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HI= D_QUIRK_FULLSPEED_INTERVAL }, - { HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_= QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX= ), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_AKAI, USB_DEVICE_ID_AKAI_MPKMINI2), HID_QU= IRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD), HID_QUIR= K_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_AMI, USB_DEVICE_ID_AMI_VIRT_KEYBOARD_AND_M= OUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI),= HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM), HID_QU= IRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC), HID_Q= UIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM), HID_QU= IRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U), HID_QUIR= K_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS1758), HID_QUIR= K_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK= _NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK= _NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUI= RK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH= ), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_= OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_= OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS), = HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD), HID_QUI= RK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK),= HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295), HID_QUIRK_= NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_COMBATSTICK), HID_QUI= RK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FIGHTERSTICK), HID_QU= IRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YO= KE), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID= _QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIR= K_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QU= IRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_COOLER_MASTER, USB_DEVICE_ID_COOLER_MASTER= _MICE_DONGLE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HI= D_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPI= DFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HI= D_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB_RAPI= DFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70R), HID_= QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K95RGB), HI= D_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_M65RGB), HI= D_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_GLAIVE_RGB)= , HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_SCIMITAR_PR= O_RGB), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_STRAFE), HI= D_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_CREATIVE_SB_OM= NI_SURROUND_51), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PIXART_USB_OPTICA= L_MOUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PRO_WIRELESS_KM52= 21W), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC), HID_QUIRK_NOG= ET }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES= 2SNES), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES= 4SNES), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_REDRAGON_SEYMUR2= ), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPH= INBAR), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMEC= UBE1), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMEC= UBE3), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3),= HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_WIIU)= , HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER= ), HID_QUIRK_MULTI_INPUT | HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_EDIFIER, USB_DEVICE_ID_EDIFIER_QR30), HID_= QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700), HID_QUIRK_= NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II= ), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH_296= 8), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH), H= ID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER= ), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28), = HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_FUTABA, USB_DEVICE_ID_LED_DISPLAY), HID_QU= IRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_SA= T_ADAPTOR), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_US= B_JOYPAD), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_8BITDO, USB_DEVICE_ID_8BITDO_PRO_3), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMI= NG_MOUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMI= NG_MOUSE_DONGLE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), + .driver_data =3D HID_QUIRK_FULLSPEED_INTERVAL }, + { HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX= ), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_AKAI, USB_DEVICE_ID_AKAI_MPKMINI2), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_AMI, USB_DEVICE_ID_AMI_VIRT_KEYBOARD_AND_M= OUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_REVB_ANSI), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS1758), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH= ), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_= OPTICAL_MOUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_= OPTICAL_MOUSE2), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_3AXIS_5BUTTON_STICK), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_COMBATSTICK), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FIGHTERSTICK), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_ECLIPSE_YO= KE), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_COOLER_MASTER, USB_DEVICE_ID_COOLER_MASTER= _MICE_DONGLE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPI= DFIRE), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB_RAPI= DFIRE), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70R), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K95RGB), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_M65RGB), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_GLAIVE_RGB), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_SCIMITAR_PR= O_RGB), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_STRAFE), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_CREATIVE_SB_OM= NI_SURROUND_51), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PIXART_USB_OPTICA= L_MOUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_PRO_WIRELESS_KM52= 21W), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES= 2SNES), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES= 4SNES), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_REDRAGON_SEYMUR2= ), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_DOLPH= INBAR), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMEC= UBE1), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_GAMEC= UBE3), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_PS3), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, USB_DEVICE_ID_DRAGONRISE_WIIU), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER= ), + .driver_data =3D HID_QUIRK_MULTI_INPUT | HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_EDIFIER, USB_DEVICE_ID_EDIFIER_QR30), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELAN, HID_ANY_ID), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_EMS, USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II= ), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH_296= 8), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_ETURBOTOUCH, USB_DEVICE_ID_ETURBOTOUCH), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER= ), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_FUTABA, USB_DEVICE_ID_LED_DISPLAY), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_SA= T_ADAPTOR), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_US= B_JOYPAD), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_GV1= 86), - HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_KISHI), - HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING), HID_QUI= RK_BADPAD | HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), HID_QU= IRK_BADPAD | HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), HID_QUIR= K_BADPAD | HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBO= ARD_A096), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBO= ARD_A293), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPT= ICAL_MOUSE_0A4A), HID_QUIRK_ALWAYS_POLL }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_ELITE_PRESENTE= R_MOUSE_464A), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPT= ICAL_MOUSE_0B4A), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_094A), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_0941), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_0641), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_1f4a), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6680), H= ID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_INNOMEDIA, USB_DEVICE_ID_INNEX_GENESIS_ATA= RI), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUS= E_ID2), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406), HID_= QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M506), HID_= QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_I405X), HID= _QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X), HI= D_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406W), HID= _QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M610X), HID= _QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_340), HID_Q= UIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), HI= D_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_M508WX), H= ID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_M508X), HI= D_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), HI= D_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X_V2),= HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_T609A), H= ID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_ODDOR_HANDBRA= KE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_LEGION_GO_DUA= L_DINPUT), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_LEGION_GO2_DU= AL_DINPUT), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_OPTICAL_USB_M= OUSE_600E), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_608D), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_6019), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_602E), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_6093), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_BOLT_RECE= IVER), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), HI= D_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), HI= D_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_= G710_PLUS), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C01= A), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05= A), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06= A), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), HID_= QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_MOUSE_0783), H= ID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE),= HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), = HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER= ), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_PRO_2)= , HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2)= , HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2),= HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_MOJO, USB_DEVICE_ID_RETRO_ADAPTER), HID_QU= IRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL), = HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_MULTIPLE_1781, USB_DEVICE_ID_RAPHNET_4NES4= SNES_OLD), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_NATSU, USB_DEVICE_ID_NATSU_GAMEPAD), HID_Q= UIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD), HID_= QUIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0= 750), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_NEXTWINDOW, USB_DEVICE_ID_NEXTWINDOW_TOUCH= SCREEN), HID_QUIRK_MULTI_INPUT}, - { HID_USB_DEVICE(USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE), HID= _QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_DUOSENSE), HID_= QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWI= N_USB_JOYSTICK), HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1610), HI= D_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1640), HI= D_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_PI_ENGINEERING, USB_DEVICE_ID_PI_ENGINEERI= NG_VEC_USB_FOOTPEDAL), HID_QUIRK_HIDINPUT_FORCE }, - { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH= _SCREEN1), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH= _SCREEN2), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH= _SCREEN), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_USB_OPTICAL_M= OUSE), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4D22), = HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4E2A), = HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_= 4D0F), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_= 4D65), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_= 4E22), HID_QUIRK_ALWAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS), = HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH= _3001), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH= _3003), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH= _3008), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_REALTEK, USB_DEVICE_ID_REALTEK_READER), HI= D_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETR= OPAD), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETR= OPORT), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD), H= ID_QUIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52), HID_QUI= RK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_2), HID_Q= UIRK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_PRO), HID= _QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X65), HID_QUI= RK_INCREMENT_USAGE_ON_DUPLICATE }, - { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2= ), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD)= , HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD50= 0USB), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SIGMA_MICRO, USB_DEVICE_ID_SIGMA_MICRO_KEY= BOARD), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SIGMATEL, USB_DEVICE_ID_SIGMATEL_STMP3780)= , HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS1030_TOUCH), H= ID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS817_TOUCH), HI= D_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS9200_TOUCH), H= ID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS_TS), HID_QUIR= K_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE), HI= D_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_1), H= ID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_2), H= ID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD), HI= D_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS1), = HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2), = HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD= ), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103= ), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DELL_K1= 2A), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DELL_K1= 5A), HID_QUIRK_NO_INIT_REPORTS }, - { HID_USB_DEVICE(USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD), HI= D_QUIRK_BADPAD }, - { HID_USB_DEVICE(USB_VENDOR_ID_TOUCHPACK, USB_DEVICE_ID_TOUCHPACK_RTS), H= ID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_TPV, USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN= _8882), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_TPV, USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN= _8883), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD), HI= D_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_KNA5= ), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_TWA6= 0), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_WP55= 40), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_VRS, USB_DEVICE_ID_VRS_R295), HID_QUIRK_AL= WAYS_POLL }, - { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_= 10_6_INCH), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_= 14_1_INCH), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTER= Y_FREE_TABLET), HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUA= L_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD),= HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE),= HID_QUIRK_MULTI_INPUT }, - { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUD= IO), HID_QUIRK_NOGET }, - - { 0 } + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING), + .driver_data =3D HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), + .driver_data =3D HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), + .driver_data =3D HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBO= ARD_A096), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBO= ARD_A293), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPT= ICAL_MOUSE_0A4A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_ELITE_PRESENTE= R_MOUSE_464A), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPT= ICAL_MOUSE_0B4A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_094A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_0941), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_0641), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTIC= AL_MOUSE_1f4a), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_IDEACOM, USB_DEVICE_ID_IDEACOM_IDC6680), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_INNOMEDIA, USB_DEVICE_ID_INNEX_GENESIS_ATA= RI), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUS= E_ID2), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M506), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_I405X), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406W), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M610X), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_340), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_M912), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_M508WX), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_M508X), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M406XE), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X_V2), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_PENSKETCH_T609A), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_ODDOR_HANDBRA= KE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_LEGION_GO_DUA= L_DINPUT), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_LEGION_GO2_DU= AL_DINPUT), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_OPTICAL_USB_M= OUSE_600E), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_608D), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_6019), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_602E), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_PIXART_USB_MO= USE_6093), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_BOLT_RECE= IVER), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C007), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_C077), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KEYBOARD_= G710_PLUS), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C01= A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05= A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06= A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_MOUSE_0783), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER= ), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_PRO_2), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_MOJO, USB_DEVICE_ID_RETRO_ADAPTER), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_MULTIPLE_1781, USB_DEVICE_ID_RAPHNET_4NES4= SNES_OLD), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_NATSU, USB_DEVICE_ID_NATSU_GAMEPAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0= 750), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_NEXTWINDOW, USB_DEVICE_ID_NEXTWINDOW_TOUCH= SCREEN), + .driver_data =3D HID_QUIRK_MULTI_INPUT}, + { HID_USB_DEVICE(USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_DUOSENSE), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PANTHERLORD, USB_DEVICE_ID_PANTHERLORD_TWI= N_USB_JOYSTICK), + .driver_data =3D HID_QUIRK_MULTI_INPUT | HID_QUIRK_SKIP_OUTPUT_REPORTS = }, + { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1610), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_1640), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_PI_ENGINEERING, + USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL), + .driver_data =3D HID_QUIRK_HIDINPUT_FORCE }, + { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH= _SCREEN1), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH= _SCREEN2), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH= _SCREEN), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_USB_OPTICAL_M= OUSE), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4D22), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4E2A), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_= 4D0F), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_= 4D65), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_= 4E22), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH= _3001), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH= _3003), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH= _3008), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_REALTEK, USB_DEVICE_ID_REALTEK_READER), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETR= OPAD), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_RETROUSB, USB_DEVICE_ID_RETROUSB_SNES_RETR= OPORT), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_2), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X52_PRO), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_X65), + .driver_data =3D HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, + { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD2= ), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SENNHEISER, USB_DEVICE_ID_SENNHEISER_BTD50= 0USB), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SIGMA_MICRO, USB_DEVICE_ID_SIGMA_MICRO_KEY= BOARD), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SIGMATEL, USB_DEVICE_ID_SIGMATEL_STMP3780), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS1030_TOUCH), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS817_TOUCH), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS9200_TOUCH), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SIS_TOUCH, USB_DEVICE_ID_SIS_TS), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_1), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYMBOL, USB_DEVICE_ID_SYMBOL_SCANNER_2), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS1), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD= ), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103= ), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DELL_K1= 2A), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DELL_K1= 5A), + .driver_data =3D HID_QUIRK_NO_INIT_REPORTS }, + { HID_USB_DEVICE(USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD), + .driver_data =3D HID_QUIRK_BADPAD }, + { HID_USB_DEVICE(USB_VENDOR_ID_TOUCHPACK, USB_DEVICE_ID_TOUCHPACK_RTS), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_TPV, USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN= _8882), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_TPV, USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN= _8883), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD), + .driver_data =3D HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_KNA5= ), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_TWA6= 0), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_WP55= 40), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_VRS, USB_DEVICE_ID_VRS_R295), + .driver_data =3D HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_= 10_6_INCH), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_= 14_1_INCH), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTER= Y_FREE_TABLET), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUA= L_PLUS), + .driver_data =3D HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), + .driver_data =3D HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), + .driver_data =3D HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUD= IO), + .driver_data =3D HID_QUIRK_NOGET }, + { } }; =20 /* --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 4303848B394 for ; Mon, 18 May 2026 16:06:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120428; cv=none; b=tlW/mmQpmW+aJd5OJVaBzMFohtI4EMkoY0pdZWLgtP3oPVc4JL2Y45s5DTi4g4jrXo9/oLvt0WXsnqBcCpSy1xXGTql/APsKxi+wbHcAxPeTlNT/5Ttq7+P5qKrbXKUrRG5Ak95+mHU6vgeQ1mnkMJzGacAnr2CPXvAIOeTkF/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120428; c=relaxed/simple; bh=ZxobgAnXXFtu+luTyBrW6xofEaS+5nRX4tb2YO+Ziyc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=joLWDvGkD2tqv1Gkq1qGyU+fRERRLA0TsiqMnmaRIEF/GhmNs3rDEbmByzAVm4SHsrH6wi5Ka/Dm5Z/lQ45kT283lShUBzJgTiFKczUImCMlh60sZrOhFFTgk8TqAHOQdLCmth7pAoZ8S3FtMQbbNwnIymlL4+Y430xloXBSnyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=yoX7/e/4; arc=none smtp.client-ip=209.85.221.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="yoX7/e/4" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-44509921fbcso1486426f8f.3 for ; Mon, 18 May 2026 09:06:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120405; x=1779725205; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=trDNQkj/0qrlzEVX1f99jKS+y2H6/G/TDAJPZf3g4nc=; b=yoX7/e/4eZkl9YZ5Htr4tp1S/+E5iA82mt2BC7T536r0qPBr2wOmNGjkLuKhNCauLu upsAr94ZaaPl0B2fCb7eH2nx7ZsYZDMWKpuy4yD104UaOTJuXeEitTWmgDdj15HsWCoR 4ZDJxjixOHZoZXFCzEWvArhiA0BPrXamxf0wOp68FxkJ12OQ/Qw9k9rWarZM+5d8b/3h pP7q3qbWxwjMBjzDljEqLGPzcbKtR+yR0GASetnLSs+yNfW0We9SCl4BqtHzfoA/tAS5 iBCcbzQF1TvTt9XDUeJiGZnoDw0UfEXe+HmRNaq0H9Xy+tKFEfHMjLelw6FN/dBb+ASl LFxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120405; x=1779725205; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=trDNQkj/0qrlzEVX1f99jKS+y2H6/G/TDAJPZf3g4nc=; b=FFpTXlIDHIf9oG389hdSElpwZ9u/yYvIXVE3Dz8w9KdgeSwx6G05mI7tZUDsll5haH kmSxeBSbs8QU/eR/2/CukvY012Thr7MfuWyHUHKVcje4Ip4zqGaddnAGvcEUdLQp4O+z OklgxGSAcfkpF/0PAXbwr7J+CSj25Y6baCZCZAAx1KWvzNiV3U9qUNA+Jr4HVxRFv0EQ iTQKUM1At1otVME9wxXlwRluWNZ4fhrKbldQffc9TplmpR1zjiXqw2tIiPhwsn0k6p39 hNBJQOg5WlipLCPE4kLOmWJ3499VNeMFTXif0qSR0arkHjwhCF3OP3V/l2BnjLe6l7qe cNHA== X-Gm-Message-State: AOJu0YyG+sqJT/LcMP7TMvIrJJ8jQGcLj7uOQfJT863aNYAhtOqa1A98 iEydrlPSLqIcbQNl1vjXOmLWePeLCqso4+2HGENOpTjt8zdUYEJizM0lFRCg4P1LAB8= X-Gm-Gg: Acq92OFOcmuL4RrxyXoEj1rG1A1KSRMAGTMzb2/DInYei92yp55oNa0gByvF+e8b9DV WKBvCmcUVEhsc3V5G/4AyUhtCSi0gNELyglHLeS+h8oL5RmakBHX0LZp+Bus3Io4HU/sUuBT8/H nfPS5gXEIpoQY3AYtXcUHgKp8UU67Bx7X3pD6XgNlkcX9Dnm6TDCXWZkKfXLsGB94Mc58fQCGdm 2+9cCOuDEYVKOpRHA9HNvfMN0KoW00FD5a8JVlvTdhlIgzbky5EOl/rk51KJ7XvS3M5WGfBCb1o Ni9zsY4fUiNpsfFa1IU0c64bw0URU3dxKzQboM8mKDqo+Be9FOKzmqrwC9ux+dH1yhwQdBqFyso fWFLxNLXMytU7dNFuq2NcCFRETu1QpOQbB/qCMtFlcsd+pg4XeeCrwqMMhDu3xz37y9ihBVoEDD Rr6QMqsprrErIElW34s5B7a3SIwX7GUfidZoVeyPFh X-Received: by 2002:a05:6000:400d:b0:449:af52:6167 with SMTP id ffacd0b85a97d-45e5c58fd33mr25735832f8f.8.1779120404683; Mon, 18 May 2026 09:06:44 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:44 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:22 +0100 Subject: [PATCH 03/11] HID: hid-asus: use named initializer for 'asus_devices[]' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-3-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=5215; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=ZxobgAnXXFtu+luTyBrW6xofEaS+5nRX4tb2YO+Ziyc=; b=THQtjtGIkxW5y6IvECx3naOLiAvoZDB01oeZrl8rXPDAaSmWtSgT2TBWYT2qH5u/DGYkrIeO+ dOjJ5FtvhDUBM8LgvocRW5nrJW2vKvL8GShY2vAoYK0F2ebysim43Xs X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= This makes the code a little bit more readable and consistent with other drivers in the HID subsystem that assign the 'driver_data' field in the 'hid_device_id' struct explicitly. It was confirmed that hid-asus.o pre/post the patch are equal using diffscope. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-asus.c | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c index 3f5e96900b67..ba9a49e9c7f0 100644 --- a/drivers/hid/hid-asus.c +++ b/drivers/hid/hid-asus.c @@ -1476,33 +1476,41 @@ static const __u8 *asus_report_fixup(struct hid_dev= ice *hdev, __u8 *rdesc, =20 static const struct hid_device_id asus_devices[] =3D { { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, - USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD), I2C_KEYBOARD_QUIRKS}, + USB_DEVICE_ID_ASUSTEK_I2C_KEYBOARD), + .driver_data =3D I2C_KEYBOARD_QUIRKS }, { HID_I2C_DEVICE(USB_VENDOR_ID_ASUSTEK, - USB_DEVICE_ID_ASUSTEK_I2C_TOUCHPAD), I2C_TOUCHPAD_QUIRKS }, + USB_DEVICE_ID_ASUSTEK_I2C_TOUCHPAD), + .driver_data =3D I2C_TOUCHPAD_QUIRKS }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, - USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1), QUIRK_USE_KBD_BACKLIGHT }, + USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD1), + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, - USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2), QUIRK_USE_KBD_BACKLIGHT }, + USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD2), + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, - USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), QUIRK_G752_KEYBOARD }, + USB_DEVICE_ID_ASUSTEK_ROG_KEYBOARD3), + .driver_data =3D QUIRK_G752_KEYBOARD }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_FX503VD_KEYBOARD), - QUIRK_USE_KBD_BACKLIGHT }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD), - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_NKEY_KEYBOARD2), - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_HID_FN_LOCK }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | + QUIRK_HID_FN_LOCK }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_Z13_LIGHTBAR), - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY), - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_ALLY_XPAD= }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | + QUIRK_ROG_ALLY_XPAD }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_NKEY_ALLY_X), - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | QUIRK_ROG_ALLY_XPAD= }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD | + QUIRK_ROG_ALLY_XPAD }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_XGM_2022), }, @@ -1511,29 +1519,31 @@ static const struct hid_device_id asus_devices[] = =3D { }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_CLAYMORE_II_KEYBOARD), - QUIRK_ROG_CLAYMORE_II_KEYBOARD }, + .driver_data =3D QUIRK_ROG_CLAYMORE_II_KEYBOARD }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100TA_KEYBOARD), - QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, + .driver_data =3D QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T100TAF_KEYBOARD), - QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, + .driver_data =3D QUIRK_T100_KEYBOARD | QUIRK_NO_CONSUMER_USAGES }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_ASUS_AK1D) }, { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_ASUS_MD_5110) }, { HID_USB_DEVICE(USB_VENDOR_ID_JESS, USB_DEVICE_ID_ASUS_MD_5112) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ASUSTEK, - USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD), QUIRK_T100CHI }, + USB_DEVICE_ID_ASUSTEK_T100CHI_KEYBOARD), + .driver_data =3D QUIRK_T100CHI }, { HID_USB_DEVICE(USB_VENDOR_ID_ITE, USB_DEVICE_ID_ITE_MEDION_E1239T), - QUIRK_MEDION_E1239T }, + .driver_data =3D QUIRK_MEDION_E1239T }, /* * Note bind to the HID_GROUP_GENERIC group, so that we only bind to the = keyboard * part, while letting hid-multitouch.c handle the touchpad. */ { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_ROG_Z13_FOLIO), - QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, + .driver_data =3D QUIRK_USE_KBD_BACKLIGHT | QUIRK_ROG_NKEY_KEYBOARD }, { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, - USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T101HA_KEYBOARD) }, + USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_T101HA_KEYBOARD), + .driver_data =3D 0 }, { } }; MODULE_DEVICE_TABLE(hid, asus_devices); --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 6713048AE03 for ; Mon, 18 May 2026 16:06:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120420; cv=none; b=q+qdfAo8zieyQv7g1XrI+BWHCAdEqaFArR3e6+Bn2J2gCnDoU7LgrFIigiLZ67JK4Oq4HPWSJ6iCWZoXDgsWexCDRcoW6MBdBt/fTA8BQloACuLByHR5zCd0ZOc8hbgzVzjfCVnlMa8dnNr71+XG3ijlFidz0y/33ywKMgeHJus= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120420; c=relaxed/simple; bh=DfbZ16dFZ+wAu5tOIFLqBrwHcPlnbizxh3/o+vMD+5M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t8I/gaOYHJGGH/bnj3lWkS4oEd2oZTnv1In5v503xpC2ZGePjOcysuersvTB1Ub1/+tgwxx7csu1fgsE1bcqY4DkM6Ug2FQsyM9PV7PDMNkHj+YF1O4H0x3FZ+iCQwxGL3ua4btXadDhHEg/N8+pQMfxe63oWl48L0LvQcms3sE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=t9OFnQ4Z; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="t9OFnQ4Z" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-4585a116a4aso2032608f8f.3 for ; Mon, 18 May 2026 09:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120405; x=1779725205; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+noZWa5z9Z6zRaYCOeZRe3oQX+SrPybiYkciD/u336U=; b=t9OFnQ4ZtpL6g+oFaQNlqBQdYI/nmVz+f9MPHERwv8ilSAyV9RUEGo2Y4Sk0n6kVUC 9W9Jms8Wd/4fokVMe3RNZtllyIqa/aSW3cns8lFNm1HyWJ/CVCu6k8T5wFuNeNAyeWnQ h5KgLHJCOCljFYsp89OpyNsYRM+p9XY2G5KtzUy75ePKrUCzW9v97g61fG5OkRBbT26E xBc+S+pHYPBC8OFOxNn1Ja5HbplFG+rSx3tWgne7pM94NhuwDj3pCkBWSiEj//R+DKYl DPtt2n4twJZcr2SKcUw4/EkjA8L5SjEjO6ZvbyzqhwUKJ0MTkPP126vkoxQPV9tJpTsQ Yibg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120405; x=1779725205; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+noZWa5z9Z6zRaYCOeZRe3oQX+SrPybiYkciD/u336U=; b=rm92H0PiBU5JL4qngPzyfZcVzPq08nYHcUK/xn5w4heM6zJi7ERdpamZVbHxrtHLOL 7LNFoWJctBsM3n2zGKJtp3AuBkMF8Tp1FibKAfERQxXBXVMUWqP341BeiYQrqGWWTh/T 4jOF5yTtNR+Cg25ZwizcTlcO6+GYaIChUvBVxdfqRG6MMvYp+pyKO+Y4d0K+Vy7et3go nzc2ZEY/9ucFMCP6uEWMPvL8PXTgQ/EH0j6wPQjlYcPYm5kuiOdBAHfbHwe2mEYwKvA1 GKLq0mN/deyteWSsfM3pM2L0s+LLPoklknovptGaDcNxpwlEGwCFZfKwr/Ezk2DU/voT RFKg== X-Gm-Message-State: AOJu0YxWh9ucAPC63JKXrdgY9hnUwGHGb3T8QzUnpUbt6EJb4gZ7CIiC 4jvr3GbnDFIe7hJ9RVdxYZR59YD+47QxooN6oi3RIQDVzjRGp1Pw83yjVZZ0kwe7g/8= X-Gm-Gg: Acq92OHDTtbsbrYHnc1K4EOoUJ1jF2VxjhTRnAc8+sKINUs2+mwhzaiJdlwlXnydUV4 D9x/KX+sOxmR3Pm8kLUOzELG0Z8o+6B0F8nTBqZ97Mo457xns/2h22l3sQ70U0lxm189O57rzRz ij54dKQg7+fZKvZ3NRnCSeEF0gkoxEfSgst6DOFN7Y+GIje8Nj9iF8ML6wBQfIMwgESSvut36YF 70bpwstv7wx75aWibsuYj8mSNgn+S/x+9ve4r0Fu9zxW1/FIfYZns2IDnaeB1RjSn62OKDvf90l WMfnsujhux+xRlCjahA1P9GF87orwhpEeN42UZjWpSV7T0PZqBy5XlnYVtmr71DiVaTtAoS6w7p dKKAXGbSTRZIzinUrh7X1Yflyt/kdCE0dwSrjnDB0Q4tOsDbkXNrJDc0wuuS+yHzYxZ2b4JdHSS us5dWTbbrj+4Xk8xFUIbeP+1icjOn7VYftQO6OBuCLMrhm86oCg5U= X-Received: by 2002:a05:6000:290d:b0:43d:7d24:b4ff with SMTP id ffacd0b85a97d-45e5c5dd30cmr25997188f8f.40.1779120405550; Mon, 18 May 2026 09:06:45 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:45 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:23 +0100 Subject: [PATCH 04/11] HID: i2c-hid-dmi-quirks: use named initializer for 'i2c_hid_elan_flipped_quirks[]' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-4-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=1071; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=DfbZ16dFZ+wAu5tOIFLqBrwHcPlnbizxh3/o+vMD+5M=; b=8Gz/09wEj9NegtN+P6xaxriqYikJVvf4VwqtslF81B3ZOLgV9aPA6oNkJ94od2lrgkseWIPox Y/0yIHsjuMEB1FYNvnoF7Gb1T+XIgZuy0NwWkpj0kMvJmT+nyV/Sh+A X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= This makes the code a little bit more readable and consistent with other drivers in the HID subsystem that assign the 'driver_data' field in the 'hid_device_id' struct explicitly. It was confirmed that i2c-hid-dmi-quirks.o pre/post patch are equal using diffscope. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c b/drivers/hid/i2c-hid= /i2c-hid-dmi-quirks.c index 210f17c3a0be..f3e3cf73641e 100644 --- a/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c +++ b/drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c @@ -420,7 +420,7 @@ static const struct dmi_system_id i2c_hid_dmi_desc_over= ride_table[] =3D { =20 static const struct hid_device_id i2c_hid_elan_flipped_quirks =3D { HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8, USB_VENDOR_ID_ELAN, 0x2dc= d), - HID_QUIRK_X_INVERT | HID_QUIRK_Y_INVERT + .driver_data =3D HID_QUIRK_X_INVERT | HID_QUIRK_Y_INVERT, }; =20 /* --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 7F66A48AE35 for ; Mon, 18 May 2026 16:06:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120424; cv=none; b=Wy/ewubXeQ2lG8KlmZXkGwJhhCdqcrVVOjLwzs5CynFn2r5gY5+uLbz+fY4mA+Ln9ezJ2id7GB4U8/rgMNSQio3qRZQo5hHID6Ea/liOO9xvuABnF9uPQ0evhyYJDjR/acprhpj+8JBfZjUQJF+HJvD36My9JXNB4L21dxkK2ks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120424; c=relaxed/simple; bh=VPJl+JB1sK44spIQdc+zTSmkH07q5Bp2DpFT/dZSrsA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M6P4qikrOPWp7P3a2nAoYJaovr9s/BjtemRjQiGlZPPQa1Dv68runJJPqXgK+wm2IH3A5V6bL4AKyMjrQtWWKZbLqdHtnHShmG4+tAiVabj54AjEdiUfqp+Qqqk9sVmQSvBricl99y52bUZx0lGepEt/mgwYC1i6/DWenOF5vTQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=pw1R9Otv; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="pw1R9Otv" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-43d734223e4so1556358f8f.0 for ; Mon, 18 May 2026 09:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120406; x=1779725206; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=n7ErACoXWhD127Qp4xaJTrfvOnkOxi6EpEfIRcq2bl0=; b=pw1R9Otv5DSI4TOuskI/bpcloY+qUdFQ/67biRg/UOLiViqP4ewjwJwzSuboYiA7QN yEm0TX/HART6LXr0AMG5qyLOhzW35u7NHYyigH67irrkcJ7VbUn83G496TbROwkX184q Gy242aGNM7cs2AFxHKhI3x8x0dYMYGd4Bc3hgZx/Od7mgN7QtGAroB8hTMCxBYv9+QJa DzIQrQX0jEV/b05DPqtqOECz/V/J7jGEun78GMRT1JIH3ZgPZoUHBWDrZqWEooVyUwYI 0q02FuI6yQ3MY+tZL3WwS//g6PA+u3lNJwRyImw9iq74yYZRYN+k3OgWJgQQAZNXw+Nq WKPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120406; x=1779725206; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n7ErACoXWhD127Qp4xaJTrfvOnkOxi6EpEfIRcq2bl0=; b=Neg3H/Y8GCkYEhO2GxJzSsztR3pmLEIselqGxaSDsGHHfaz2hmDQyxav9ZZ8fnu10m CXkPgxIg87iLAIHvBFij7D0jj321YCDNDGG0t+E7gYCRgTa1qzoo9RXmLnYXsciFA0M2 PYOPeQuBKrvqmZnxpnJR12KmR0bsZtW3hmTmU6deR0yvR/8dVsLYJJ9LtVear72X//Cy efQG6/lFHicl0qhfBMejMrPovEaXw1mJKY7MbW/Ke2u1sbPKUj872lciUsH+dmndIHCy r4tiuisYAhfwVFmjC/5MG2q6H99fm+bYeLQkt4eiPpu3TBqspqx2rGRkla20Zt4XPup/ /nBQ== X-Gm-Message-State: AOJu0YyPhJYUZXF7VktD6+5+YzEc4WwH2cIs6U/WhwPBE95sN77XErDr 0PgRsYXyLFrobRjl61cxPUFNekEHVZZRH8GBTokTJxRa06aVthgNYrywip1WSTPFUgM= X-Gm-Gg: Acq92OEESdOrYgwKtyA+mWX1SPuXHbFkxjfMG6v3+3MJyMowG6vx92DePmSIztg+9ej 5xuR4m0erxi6Z+F9//OP+c6Vy3kZ9MT9JcNQUVDyvhtjf7+v+bppnsCHDXWCjYPr2H6Y3zyBU5Y nSzG+nzfUnbsZZOdaYBkSrNd32AkiVYcAr6n0g9oEfMawA1RoDQHKYC7LqF/t003+oC2SPNCNsy 4Hl2ZGNdnjnXezMiMxU7MhGC91+3xaZGVxvkj7LcnxSVAdDo31wZx/aw3TzD0x923On44FKSsQ8 X3tbroekJnwLFjEad5XuNO0sIvnAgFzeGcHBflHTSqfca8fFJFf7Chk27LH3fnOdTRyte0jRGq7 izJyDbdwzFt3W4wOjY2SVVSZvtmKY0d9L8i2j9dAUTzrCJHIRBY7vGZtPrwyP3nDpwxYqruSTnD laO0qqq6lhzSXhI/tvcRZFIZVK2jvx08EA9rtT2kknGdDXhdrtWJM= X-Received: by 2002:a05:6000:230b:b0:43d:799c:b2cb with SMTP id ffacd0b85a97d-45d941b0783mr30206592f8f.24.1779120406270; Mon, 18 May 2026 09:06:46 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:45 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:24 +0100 Subject: [PATCH 05/11] HID: hid-belkin: clean up usage of 'driver_data' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-5-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=1565; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=VPJl+JB1sK44spIQdc+zTSmkH07q5Bp2DpFT/dZSrsA=; b=IPUmvK2ytKL4amjX9tpk2IIvXuxxs+Bm0Kuk1azP49TLO+fuXSR1AmIA2SFsnTM2/957tfVX7 8DsV636tltVCeH5U6651Qa8QUd+U1L0o6LxwCF1IXYi3dxBVMfdVR3V X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= The module is storing an integer inside the drvdata pointer, which is confusing, lets fix this and set the whole of 'hid_device_id' struct as the drvdata and then simply use its integer 'driver_data' field for quirks, which shall make the code cleaner, type-safe, consistent and more readable. This makes the cast to (void *) during storage a bit safer (just to suppress the const qualifier warning) and the cast to (unsigned long) during retrieval is removed. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-belkin.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/hid/hid-belkin.c b/drivers/hid/hid-belkin.c index 75aaed35ee9f..84695115d37b 100644 --- a/drivers/hid/hid-belkin.c +++ b/drivers/hid/hid-belkin.c @@ -27,7 +27,8 @@ static int belkin_input_mapping(struct hid_device *hdev, = struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { - unsigned long quirks =3D (unsigned long)hid_get_drvdata(hdev); + const struct hid_device_id *id =3D hid_get_drvdata(hdev); + unsigned long quirks =3D id->driver_data; =20 if ((usage->hid & HID_USAGE_PAGE) !=3D HID_UP_CONSUMER || !(quirks & BELKIN_WKBD)) @@ -48,7 +49,7 @@ static int belkin_probe(struct hid_device *hdev, const st= ruct hid_device_id *id) unsigned long quirks =3D id->driver_data; int ret; =20 - hid_set_drvdata(hdev, (void *)quirks); + hid_set_drvdata(hdev, (void *)id); =20 ret =3D hid_parse(hdev); if (ret) { --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 2E69C2BDC0E for ; Mon, 18 May 2026 16:06:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120421; cv=none; b=QIxkVERfmxUBj/neMSSV3mxV7ucKs9Nnzlo1/O0qIZfhY+Jal8IagPLtPZD91XBLD8NA5KrsexqJwGrefFLuGItYN/XjNN+cofgX9pnn0lxHAorxgcN/IpWxowZ1KaNTKju8fNjDk8jpmLqgZN2HC7f2CZXHfulkjJQ7/uv32k8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120421; c=relaxed/simple; bh=4BLBuzvHZ4ABkxhUQ6RyoGHT8thEIVeSKHY3Wfmi5wQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o8RPOwxqs0awssypPaAdxPvbtz0ZLwLd80OwwMFqTh17NIhdYePoSaWX6yOaB1lpfQpQfKGad7VPGhOHKKeN//4o1zowHfo6MWuozGdC37I5DRGAIaG+648RIt4XyxH4hyep8YyziMaeU11pOdo+FjhynpelPkK4f2h4pnFmaSw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=z5aXTyMU; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="z5aXTyMU" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-488af96f6b2so27812945e9.0 for ; Mon, 18 May 2026 09:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120407; x=1779725207; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=aTANvzrVQC5Evr7G7m42yOVO3EJo5zNqIJ0FL8tQ29g=; b=z5aXTyMUsEp6XRWZ8ruM3URzzemaXMbEj/0TRFqZzINYkryTiVIH2D5eZvjMst2qBw doFgbkh+YuJFzuAmczSuwOW32nJhRlpBncmurLVWonOxHPQ+rng/YbssW9d2+QD3GrF2 NThEsLsqCL+pSGIwI1Y4sGnTIMel7N0NBoYwN6EFbPDpJeFDj6fY5bNUZZ/9/ZhwZzo3 qpsgZqCKrB3VtC3AfxR/sbLgMEdBKmyc8pZsnELXluMuQX9QbzvxjWein/EcTcRsbhwW B1nVP49Jo4LYV4PlvOXdpTS/xJCcch7VZ3pQDdrPbgwYoqa84UsH/wTbcXVyB5tw7xq4 qYxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120407; x=1779725207; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=aTANvzrVQC5Evr7G7m42yOVO3EJo5zNqIJ0FL8tQ29g=; b=fPIbT+5geSKJaP+lzPmdFObFu+z3wNKh9TMIsnaNdRB+th9+hvZBGe8bTdPVFQCRi6 /5yaFsEXkQgFzD9kkaRbn1qXIvb6bTBTih7Uk9RkIVQBG8zaxliMZdRS1R/ErG7IBEAY 7O+wu7A4LELGIiWnzUCjKvHrXtCfN05LXeqFTUdpwS+lez6bFG1k3r06jKKpbg13LEyU +dVUK+zSK0sw5PxvF4Lkb2uLbpKvVypbPAF3MJ1SvzaUL4G4xJ2V8S40B6SAmJbQ9hL7 Y9BltFm8qcbrIYz72n53OkPaHPM1KXCXaOkev7UgIHzS6wcD3irQ5TK5ZPxuulh2cFR4 IdmQ== X-Gm-Message-State: AOJu0YxKlmoS8xhYa72oM57uDTm2rlYDWGrgfeGmAD33ELOKH9I6adLB peLMT0QUzunjgmSNL72kNf4BkP5A1HQ436ROqK/sfLyujq1Mrs200ex5f7ukDLeFzyk= X-Gm-Gg: Acq92OHYb5rwe+6OcIAXXcIJBAVFdY/1qV7Z0FOPWNZ0R/YDV9m36Dz2jsXcRTcVdNX m1qgfIdAfXUIx8VkeavvBVabbCkDYA3ficAAOVw+pe4RrHs/G7kM5wBN2zXxXeSzMKXivRgWXjb m5Eabh62hC0CJxCsZszisHTgoUmjFqoXeh7CXs2iS1Fiy/A/7DuTI0u6uC/WZCQ7mTDHYUQF4Sb 0dXqPq/SisJgCcbpbT2BSb+ZDmQA5W5VE6azJImhv8jKvgIibkOrPeCVkMtFv0CofpN6uT2eWgI Ld3ITt1TCWqmJ0/5we2yUptfdSOgsfyPESmWzf26N0WrsOjJDlVJY/Rn9L8p2Y61m+CoHN0xBjS uuF1SKYpLSzMIp9YiG4TmLfiGBZOonBjlkXtNrLRtZxJN9d9G81815WKTvvqEW0zJQHonuJypyA wkHGktWAoBpjAePlBbaVVUGbWGi+3pao12MAnvJdXW X-Received: by 2002:a05:600c:8b47:b0:48f:dfe3:dae3 with SMTP id 5b1f17b1804b1-48fe63223edmr262329625e9.17.1779120407067; Mon, 18 May 2026 09:06:47 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:46 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:25 +0100 Subject: [PATCH 06/11] HID: hid-cypress: clean up usage of 'driver_data' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-6-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=3776; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=4BLBuzvHZ4ABkxhUQ6RyoGHT8thEIVeSKHY3Wfmi5wQ=; b=WI86LeXwIOpI6iAyQm/4KiR5rNyE/Gw+y6lKQswa4tmDTGcn8kDuInhS035a5V8eCS4I8rA7l b6lQaIX9CaJAxWgmYWpQSoVwJf7PByDT07RfpXEYQDPZwcBCODsdgVg X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= The module is storing an integer inside the drvdata pointer, which is confusing - furthermore this integer is mutable. When its value is changed it is set again using the 'hid_set_drvdata' API within the 'cp_event' function. Let's fix this, create and allocate the 'cp_device' struct that is then set as the drvdata and then simply use its integer 'quirks' field for storing the quirks, which shall make the code cleaner, type-safe, consistent and more readable. This makes the cast to (void *) during storage unnecessary and the cast to (unsigned long) during retrieval is also removed. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-cypress.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/drivers/hid/hid-cypress.c b/drivers/hid/hid-cypress.c index 98548201feec..f18fddc176d0 100644 --- a/drivers/hid/hid-cypress.c +++ b/drivers/hid/hid-cypress.c @@ -25,6 +25,10 @@ =20 #define VA_INVAL_LOGICAL_BOUNDARY 0x08 =20 +struct cp_device { + unsigned long quirks; +}; + /* * Some USB barcode readers from cypress have usage min and usage max in * the wrong order @@ -70,7 +74,8 @@ static __u8 *va_logical_boundary_fixup(struct hid_device = *hdev, __u8 *rdesc, static const __u8 *cp_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { - unsigned long quirks =3D (unsigned long)hid_get_drvdata(hdev); + const struct cp_device *cp_device =3D hid_get_drvdata(hdev); + unsigned long quirks =3D cp_device->quirks; =20 if (quirks & CP_RDESC_SWAPPED_MIN_MAX) rdesc =3D cp_rdesc_fixup(hdev, rdesc, rsize); @@ -84,7 +89,8 @@ static int cp_input_mapped(struct hid_device *hdev, struc= t hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { - unsigned long quirks =3D (unsigned long)hid_get_drvdata(hdev); + const struct cp_device *cp_device =3D hid_get_drvdata(hdev); + unsigned long quirks =3D cp_device->quirks; =20 if (!(quirks & CP_2WHEEL_MOUSE_HACK)) return 0; @@ -100,22 +106,21 @@ static int cp_input_mapped(struct hid_device *hdev, s= truct hid_input *hi, static int cp_event(struct hid_device *hdev, struct hid_field *field, struct hid_usage *usage, __s32 value) { - unsigned long quirks =3D (unsigned long)hid_get_drvdata(hdev); + struct cp_device *cp_device =3D hid_get_drvdata(hdev); =20 if (!(hdev->claimed & HID_CLAIMED_INPUT) || !field->hidinput || - !usage->type || !(quirks & CP_2WHEEL_MOUSE_HACK)) + !usage->type || !(cp_device->quirks & CP_2WHEEL_MOUSE_HACK)) return 0; =20 if (usage->hid =3D=3D 0x00090005) { if (value) - quirks |=3D CP_2WHEEL_MOUSE_HACK_ON; + cp_device->quirks |=3D CP_2WHEEL_MOUSE_HACK_ON; else - quirks &=3D ~CP_2WHEEL_MOUSE_HACK_ON; - hid_set_drvdata(hdev, (void *)quirks); + cp_device->quirks &=3D ~CP_2WHEEL_MOUSE_HACK_ON; return 1; } =20 - if (usage->code =3D=3D REL_WHEEL && (quirks & CP_2WHEEL_MOUSE_HACK_ON)) { + if (usage->code =3D=3D REL_WHEEL && (cp_device->quirks & CP_2WHEEL_MOUSE_= HACK_ON)) { struct input_dev *input =3D field->hidinput->input; =20 input_event(input, usage->type, REL_HWHEEL, value); @@ -127,10 +132,17 @@ static int cp_event(struct hid_device *hdev, struct h= id_field *field, =20 static int cp_probe(struct hid_device *hdev, const struct hid_device_id *i= d) { - unsigned long quirks =3D id->driver_data; int ret; + struct cp_device *cp_device; =20 - hid_set_drvdata(hdev, (void *)quirks); + cp_device =3D devm_kzalloc(&hdev->dev, sizeof(*cp_device), GFP_KERNEL); + + if (!cp_device) + return -ENOMEM; + + cp_device->quirks =3D id->driver_data; + + hid_set_drvdata(hdev, cp_device); =20 ret =3D hid_parse(hdev); if (ret) { --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 9181F25B2FA for ; Mon, 18 May 2026 16:06:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120419; cv=none; b=TlJ9mlRhZlK6fi0lGAYqHCxz3r2GEVXycs95bG8kDSJygXNjuW3hdIit/reDTCRMvgYEgbcGIF0wqkOSZkqEkR0ceIeajnx4V3UW7YSmLotLNHaFf20cBot19RVmbud1Olmmbf9s+nM6jmfkFCT4QzIdXn4P05HDzv4Cqer55pA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120419; c=relaxed/simple; bh=x3aMPpRcoEgRkZ/MhsGBZNT7A1i9jwcJC1NAGPv/FpU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P4eX/RBn1orLDaIuRB9HxVlb17C4tab/FF//8NnxZgzgMyuQZznCHNrmMy+Zvpy40gz/HafPqfpsEjs0lIJqfaw8MwqUPaP+t0A+BcWSS626r9VbN0MaBqh+g+/5SJXfbFDdqq3XdRbUvMp3uvYwWNJ/mbg7hREnV6UNcTWUuM8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=SVi6i5vo; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="SVi6i5vo" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4891e5b9c1fso20742685e9.2 for ; Mon, 18 May 2026 09:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120408; x=1779725208; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=B2LyKKQ83AB2NVdR9znbFMfry5btVkvzNDKJnU1UAQc=; b=SVi6i5vougrpjRZ9y/qDAU+TJ2q+MnTmxz1BAVzYUSs1eElKB3Z8zYoSHOCyDjMorF tqZ97UduH6NKZcGOHoaZgkuxOPy7kZPTDafafk8mz1Mpa1HibMnwwkAosleWO+k9ManJ k2YfgPGYBF5Q1FmXVT0rN2A+DFvpjnMxEsfZ+DBccAdyyslqsIDQZA5FjSLcqGf4nU/A S97xgAgEvcr7yhsAI85b7LNvgm+haxktgzF96gbZO3azpUuRMoc3Myefc9cDYXcNATA/ ZljBmT6uIyA47T6nYSRPIKOAfcFJ9z42sNemX+Y2e+4/kx2QtqIcSCQbnZFSz9peft5y +3FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120408; x=1779725208; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=B2LyKKQ83AB2NVdR9znbFMfry5btVkvzNDKJnU1UAQc=; b=cmBpQIv/f6ZfyFwf2nlxDu0l+v0eIFsr7gXBgdeXw/opWcVC2T9w2HL06MUYCm5RWx 4Jq34Upb30CQYxDVOYZH+k6M61arZ9IDeqhP1cwuo1ZpkE1OBYo9TZWr43KSHVPTYk+y uqaVFQkFbSDaT0JoDa4iU30/L9Isi0I22pND8FkvvPhBhL6hgQnc5FmzoKXJ6LDhX5xa RPYHozeepnbkrGx4MxDkW1Glz+HEpQuAjFb+3Io5xammEh40ap1yrP3l83Dk8pusP3U+ bvGJ6SupVYSVoA4g/LD2BgAy6Pw6E6rtunEwjjn1ZHrjvfiAxCgxzjF+9IVDXpyYNbVp OtVQ== X-Gm-Message-State: AOJu0YxDY5NQuEuxRCWxHnJ9eHYTML62y06acQuQyDRh4vBe7OaUQu0z k6bsUKqrBp1OHI6ptyPJHpb8bNy1/5Gv4NrI4A/Ng9ShA7WozSpTbnzOnDs+iTrjJl8= X-Gm-Gg: Acq92OFlQIkXbUq2oVOxg06Gb8TseOZ2VvmyLawGN0AVZqiCyQlLLYLaisDI+dppDq2 mkRmRGZbAbbBK2eqHr3x1y+Yfx5+AKHyfBLofviwm1IVXuUkl2iYTya8ODW6uDB2/QiMvwRwLEO qwMUHz5CiGICGME79vOcuiwqYYlZ4sH6IM0vhGpsoC6qEbyn+7LXTsBy7KYotRTImXcuT/Z48Is LalJEX18mu/SDBALm99jlXLqvhYveJvALK5kpgcziIAldY/4FqGk1xMDknQMnM1eNi/rqc6q6Y2 nEKcA3Xvkt5MXiY39x2qFHQNNOb2ikSpKXJV52Z27zzGCQ/NegRbEnagPYRUJN4AASGQbykyqOR OFMIx3Izuu/qUAOzqIQKeBlWzUZE8g5pjFvHGGsA2kNMo62pDx54eBlfubgCqyJ+5osw42AiDd+ CVTDUjg7gQ8Tgt3V3zNbpLIQo9+RuqqunriLCU+Sud X-Received: by 2002:a05:600c:4e46:b0:48f:e230:8cab with SMTP id 5b1f17b1804b1-48fe6626cfbmr245961035e9.31.1779120407889; Mon, 18 May 2026 09:06:47 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:47 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:26 +0100 Subject: [PATCH 07/11] HID: hid-gfrm: clean up usage of 'driver_data' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-7-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=1947; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=x3aMPpRcoEgRkZ/MhsGBZNT7A1i9jwcJC1NAGPv/FpU=; b=w+Rq+2xfsRZdqlPSQbVeP2kPwRkbe3svZcczo65Wi0mHrTx0nTeUiT57c+CCr4h4WiiaKL7Ot 79BzF4brtCHCxayqxjSWWcwHLsBscrlRbD9F1wJPLADEbi45z5stl05 X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= The module is storing an integer inside the drvdata pointer, which is confusing, lets fix this and set the whole of 'hid_device_id' struct as the drvdata and then simply use its integer 'driver_data' field for quirks, which shall make the code cleaner, type-safe, consistent and more readable. This makes the cast to (void *) during storage a bit safer (just to suppress the const qualifier warning) and the cast to (unsigned long) during retrieval is removed. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-gfrm.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/hid/hid-gfrm.c b/drivers/hid/hid-gfrm.c index 699186ff2349..0be49a93d28b 100644 --- a/drivers/hid/hid-gfrm.c +++ b/drivers/hid/hid-gfrm.c @@ -28,7 +28,8 @@ static int gfrm_input_mapping(struct hid_device *hdev, st= ruct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { - unsigned long hdev_type =3D (unsigned long) hid_get_drvdata(hdev); + const struct hid_device_id *id =3D hid_get_drvdata(hdev); + unsigned long hdev_type =3D id->driver_data; =20 if (hdev_type =3D=3D GFRM100) { if (usage->hid =3D=3D (HID_UP_CONSUMER | 0x4)) { @@ -50,7 +51,8 @@ static int gfrm_input_mapping(struct hid_device *hdev, st= ruct hid_input *hi, static int gfrm_raw_event(struct hid_device *hdev, struct hid_report *repo= rt, u8 *data, int size) { - unsigned long hdev_type =3D (unsigned long) hid_get_drvdata(hdev); + const struct hid_device_id *id =3D hid_get_drvdata(hdev); + unsigned long hdev_type =3D id->driver_data; int ret =3D 0; =20 if (hdev_type !=3D GFRM100) @@ -99,7 +101,7 @@ static int gfrm_probe(struct hid_device *hdev, const str= uct hid_device_id *id) { int ret; =20 - hid_set_drvdata(hdev, (void *) id->driver_data); + hid_set_drvdata(hdev, (void *)id); =20 ret =3D hid_parse(hdev); if (ret) --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (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 7F70148B364 for ; Mon, 18 May 2026 16:06:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120421; cv=none; b=at5JMPwKG7myJGR4G3x22OY86wJkqUwY2CtHjpTAEx/so2Gx6LjevOFQD0gwhVHOTpZwkutfsANGLcEaQstzLcLpCDSBZ92cd0bw9xdaOnRSN94iclpHAZV/jvQjZXKy4MjoHCgKdCNAocUt1VuIXsVoCy3iSDCrwjv/WXCb+M4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120421; c=relaxed/simple; bh=nNVLFwaSAIDvIpmHe1HBjRdSBcNvB7SacHNgTDhwb4s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KaegHqyQlY61T7ZEI9iZfEHFPSLnccmCpdBWed9zw80VLyJXlBAewhVH1MPKaDpxE0vgxI57edhSf7RqjD8wMS7qK/mRIJXAEMKU+/4Enq04ERyYNDZLjEodRL7f2G+NDftRcDPXigZsB12rRybFSB3fALgp6gbpYc0f0Y1kK3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=vR0gwvnv; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="vR0gwvnv" Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-44ccbd3290aso2292173f8f.2 for ; Mon, 18 May 2026 09:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120409; x=1779725209; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PlMfhEviKXjt/bYrgNS/DuGQqiwDoSdVj7ADssoybZ0=; b=vR0gwvnvJZGPv8vYDDa0pLzQO1VLhLbz/O71qV2gDs7JgL/uO6DHSCP0sQdT4mPv7w HPVXcqfo/tDjEocQXgSMb57X9v1+eAvraEpUws3oGa+DOVpW460pjul3FMQDYqibyMxg Z6tv/JyK87+bOsq7Zips80uGcxB5V4Ke3UCQHs3HvoWuV15lmcJolfRb7KSl/XGsrX3B RaMQtmhxsaUSS4Xek5dCNv2s4iU7guBM9dA0DboWUtmugaFGTjqmGgFchkRGDp0iW8re WspslBOOhRtALAV9XoUimCc38nsUv4ER4luCTr8xPzb4u/wCR8hEBhWGbcQc13OYFPti VtlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120409; x=1779725209; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PlMfhEviKXjt/bYrgNS/DuGQqiwDoSdVj7ADssoybZ0=; b=XfGvBwXsNCUHUzyAScTWPRTC/m55PGsChWFtdEB7/ZySBCwfQxJoMsxS2X4of6e3cp 9XbhwE2aiLnUAbVCgZU7z1dtQtt4Qk0sJda1tSeXKm3BvbRYz9erFDfLP88PB/WldByY MbZQe6DdPS1EoN6j+WdDCH1HGI9FCSAGuwfyiaCu9llKaw6jEJrQMatEMoFvrrECPPXp NNDhL8gj1FgGWDt4fswR26Wr0PPof7lCu4dRBLmVesM7LzRxP/z8cJ6b4+jVQc2q3T7V PDSxfNTx0Gr+WLdBed9YOYPqZwVEfLuNVscU+GzS7XRithvJhq0R4GUpec5LHVVPz7xP /0Ig== X-Gm-Message-State: AOJu0Yw/pyGPwEJmI6pdJcsh2yOWzMl22/PZi2NOpK9tZLpnuLWhk+/K sPt9DuQhuu5vkuB5gCO9JkgpaK9yFtBFZfrEuZ6lFEt5rZvvEnnMHK6SjPWYT+4sqbc= X-Gm-Gg: Acq92OGA/ZuBtpVa/D3gFLqrDANFC5JsFxWfqke5ziKX3sVdxEjWT5XDZhTNntXb/e1 VGdYwuuaBs+m98qP7EdfGKC46PWKzFunKyiJ2NdUKghGkVQTTo0bVwUnLqXJWU93SfzfDc8fjuo sDA451Dqr5pbHT1rM9t8L5jgiTPWEC4FQ4JfX2fj1G6UY7Kdlt+czzEQmqfXBG76OsUG2mAHfhR cSAZTfGr4d1/tpBbk27A3gI2SzjFV017hF8JOJ7y+zOQob+s6hbf6PApFaIusDRLSDDjr3L8wCt /zlvCLbgwjTsxac/r8DmiZUv3nfmT9QMeB7GAh5fMz6Al5q4Nx1jH1N5EQd4503sr9YCGHxbulc 9ukNOu+TOdJ4l+Vcmh1WMhjAN88xsVR6+FwwnNLspzlybdIZfGl6FN60XtSDpYiyQu60RcvWGxI LyK2JpYKtXQ16otWTryyXiKpAJcyHHzFCimfLSO7Ox X-Received: by 2002:a05:6000:1ace:b0:45d:3cbf:bdda with SMTP id ffacd0b85a97d-45e5c58d4ccmr24791826f8f.20.1779120408750; Mon, 18 May 2026 09:06:48 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:48 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:27 +0100 Subject: [PATCH 08/11] HID: hid-ite: clean up usage of 'driver_data' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-8-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=1844; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=nNVLFwaSAIDvIpmHe1HBjRdSBcNvB7SacHNgTDhwb4s=; b=3q7D5SwZy+SEgk7TLJ9WafWiMw1l6VRsJgX46Y4QXQM5VB9IIi70NXXlCBi4ifazeH4v8H6Nh nXL6HvnQQcHDkEE4Ek2+0ThS7ri86+uoMrt2VrUrz89TyLN1VN0HFPO X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= The module is storing an integer inside the drvdata pointer, which is confusing, lets fix this and set the whole of 'hid_device_id' struct as the drvdata and then simply use its integer 'driver_data' field for quirks, which shall make the code cleaner, type-safe, consistent and more readable. This makes the cast to (void *) during storage a bit safer (just to suppress the const qualifier warning) and the cast to (unsigned long) during retrieval is removed. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-ite.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/hid/hid-ite.c b/drivers/hid/hid-ite.c index 8e42780a2663..63908f24b524 100644 --- a/drivers/hid/hid-ite.c +++ b/drivers/hid/hid-ite.c @@ -15,7 +15,9 @@ =20 static const __u8 *ite_report_fixup(struct hid_device *hdev, __u8 *rdesc, = unsigned int *rsize) { - unsigned long quirks =3D (unsigned long)hid_get_drvdata(hdev); + + const struct hid_device_id *id =3D hid_get_drvdata(hdev); + unsigned long quirks =3D id->driver_data; =20 if (quirks & QUIRK_TOUCHPAD_ON_OFF_REPORT) { /* For Acer Aspire Switch 10 SW5-012 keyboard-dock */ @@ -44,7 +46,8 @@ static int ite_input_mapping(struct hid_device *hdev, int *max) { =20 - unsigned long quirks =3D (unsigned long)hid_get_drvdata(hdev); + const struct hid_device_id *id =3D hid_get_drvdata(hdev); + unsigned long quirks =3D id->driver_data; =20 if ((quirks & QUIRK_TOUCHPAD_ON_OFF_REPORT) && (usage->hid & HID_USAGE_PAGE) =3D=3D 0x00880000) { @@ -94,7 +97,7 @@ static int ite_probe(struct hid_device *hdev, const struc= t hid_device_id *id) { int ret; =20 - hid_set_drvdata(hdev, (void *)id->driver_data); + hid_set_drvdata(hdev, (void *)id); =20 ret =3D hid_open_report(hdev); if (ret) --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 33B113F44C6 for ; Mon, 18 May 2026 16:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120430; cv=none; b=twF9UKlbnIwCkkV71bZ8QqaU6ic1Vhq4JveXLtM72vYcu8IVoMNxUukdytKbWc23BvbNfsSTUusvsENwP1QUbs8YhT1oU54lLJEdjbUefdmAvcT73Qao6namuzauwDzZdQ+z8RvIh1+pJDbjeSaKwTuTGTmIEwGRJBjK+cms0iY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120430; c=relaxed/simple; bh=MODmpC6MDclgoR4f64anBxcZ5VnnvWuNREypyTh4Svk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l2bYoakJEe7lbQHslmOSNtSZW8x8zR7Iv3fU92gDQ83Fert0DjiYo57MS6Np7GyGnoIKX9nKYZKtA39FeZiHA/gheKAu/bzVLJwvZmeb2VRbxPH1mt5RVLabKgqDVHcwsS70RazmlLtxTNcsdiCA3U2zm1foAsdfjQob0YQzIXE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=eZ4jlJVw; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="eZ4jlJVw" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-bd2e8931915so589702266b.1 for ; Mon, 18 May 2026 09:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120410; x=1779725210; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1cdfI3FSQ8qouwIK4zMFyf74YPISgTZP1ua2NsJ/Fjc=; b=eZ4jlJVw6LMaDRKaRiypS6ST255EWWej1YccrCzLM3potOfGoKpaZJNa8k5d0t+MiY 23ROuoq1yKrzcByZcqvOf2i/RuZqSHP03NjXlUKDntlZoW0I9/AsE6w4GvIZaB1YQ845 QW1tZ95fyLcOHB7MsAqAwRufkBPXjjWN+KUbVYaN3ABKOAawB7B3o6cHepZQVKQ3wYfC TtImh++adE73SJHmaTIaDFiqUaNgX7u8Qw4pq77X8awdT6ETS0qjLcL2d5feRQnwWq+y E75E57p+46/0/04rXQx5xiqeo8Ic5cyW727FqFoMF34c39+YMEUHMdnRwZGGQXVh+H6N rGCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120410; x=1779725210; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1cdfI3FSQ8qouwIK4zMFyf74YPISgTZP1ua2NsJ/Fjc=; b=a5AzaLpXDoyNPNM1WD6fFIfT8hJYl4/84h+fRkW/iDojRcNnvSB9ZFVVj37Mp+hHZk 00Dw6jKQvSsW3MKCF419OtHOM91HRrXhiPMucli00Z5Vh4/bLni+tD2HxY2yErEvpY8K nbEakYkbh8GOvjHcfktdrUAyYhbPAZhnzg/MV52y8qMdgAFqrm0lxURNLmUNP8M6NNqY gZJ0r91h2hRn+T8XoPcuRot6pyPBxbY2wbgZWFdjqCG3UuGvAXUMXdnksSj5a/ee5HKG 1mm2YIERGA/XLVGng3uK44udQrUkRULAoY7wlw4YkWe6jNG2R7pSYgFjzZ8vE/UQ1Hj2 s+/Q== X-Gm-Message-State: AOJu0YwqpAlnrDwP5GJnUfIYzFpSlIICyXusQoDYqTgEag+7Fjvl5rPI 2j99TxSUX7tIDmxSrS1frHClTsbfG6a9YDthdeqYeyrCAKvYtZ6SSzacuElZFUrnqfFgEymlyv5 VUwbt X-Gm-Gg: Acq92OF4RlPbC8hOq+OnxUf+c+YwgiCAGBCOjoGGIgml2v4Z+i2FYu24JtKtEVGQQ1F IZ4H6oIHZ1r0hnSGocVRaN51HJRaeZpAonPSsx1ky5Ns8jABlxoNAOIvjkLnk907LcDEJ0tpPJc /jDBz/+pgGnCIVOL7X4ze/nRfub7dHGfmd8PtrRVwhSntL+TmY7aYg64lGStVl5e3KEnPSO1O8L 5Yxf6qgKO4gR91T43W1D6qyzi4H/kbTJtPDQLrdfV3X4JXOY3YxfaaJkWClIh++vVk9QDeaEooj 7DEEourN5545sAyoLzJOBbpunVBDT18ovQAdiGpEz7wKk7uQM62toWGfkgL/6oA8ZineRRdM8L7 U0y996Nv2pbXwY6p3eYnxGzrGdnkTpa1mLkq0yXwE8t+nrD/OLS9X2pjHLSQyV67tHAXFXnx4TX aNZRL0blXIlZstZn8hOJMcWigWPBz8McSNmUh/pi/gSVogoqzl32HSn5F2fOCSww== X-Received: by 2002:a17:907:3f1d:b0:bc1:7da0:21 with SMTP id a640c23a62f3a-bd4f34bd0e3mr887805766b.23.1779120409652; Mon, 18 May 2026 09:06:49 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:49 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:28 +0100 Subject: [PATCH 09/11] HID: mod_devicetable: 'hid_device_id::driver_data' add union Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-9-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=1264; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=MODmpC6MDclgoR4f64anBxcZ5VnnvWuNREypyTh4Svk=; b=pKDZ0ItP8V5W0KDl2VXaAomicXcLScd5Y+e8u+VsK+U24YkxEai5c30Diwo6xP/2y9lkQGhnh DkZs4XfnbumBkGhA1KCtdt9dSS74zupFZaA3ovr4bgYFxQtwjby+Uaq X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= The 'driver_data' field can either be interpreted as an unsigned numerical number or as a pointer - this depends on the driver within HID subsystem. Unionise this unsigned value with a 'const void*' pointer. This change allows to remove explicit casts to pointers in the pointer-users case and as far as integer-users of the field are concerned nothing has really changed. The change doesn't affect the size and layout of struct hid_device_id which is part of the userspace ABI. This change aims to improve type-safety, readability - as the intent is more clear - and portability of the code in the long term. Signed-off-by: Pawel Zalewski (The Capable Hub) --- include/linux/mod_devicetable.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetabl= e.h index 23ff24080dfd..90b2dae75109 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -175,7 +175,10 @@ struct hid_device_id { __u16 group; __u32 vendor; __u32 product; - kernel_ulong_t driver_data; + union { + kernel_ulong_t driver_data; + const void *driver_data_ptr; + }; }; =20 /* s390 CCW devices */ --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 3EAAC48BD2F for ; Mon, 18 May 2026 16:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120428; cv=none; b=OO4K1MJTtimBvKlvUHZikK+sPM5dwppNs/78yeuofIf8NlfKrcE46Pk4W4vHhIzKAmV2ILLXAggGq7+UG0qIWDkqAiVmUF1S7TQxcunZdN7Y2s7cj7D9HpbQ95UWyFgAwm/gYGM+mHWQJVRFZhSYcfoQIiMBDEAXiOsC/QkNDjQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120428; c=relaxed/simple; bh=lVYU22Y5Ir69wDkvv7hToHs50FivmWy0WICMwJWBdsE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KSLEeBp/fHlVYW+riLWd7HDSwoBXnBMpztt2z7hCkSmM7pPUmAFg5MQ6uIzQR5SyNtr7ZJNbCRS+NAMr9AZqfRIhtkrf5sXoWM1aQrfQhw6hobjOvdSmh/ggencmsqNiI7KYv/0DlMRS9HrMnsTjAN9+TH6pcd8M5a+1oruKGq8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=wX7o3avh; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="wX7o3avh" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-48d146705b4so26934415e9.3 for ; Mon, 18 May 2026 09:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120411; x=1779725211; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=U1Zaaqmqxh7fW6GrkDq6rtfonmed+F1FtkVFlaeX614=; b=wX7o3avhlctBtTqQxFR64drGrnjz79f4CkJnw6vZJ2xi7xqnpE/C98ZeEDubjgQpDA FprbBoK786KjDzzWzI/MtEudPlM3+VIGOd4SorucMn7JjTElgTFgiLFIA7EZEJY0BaqB TdVC2/TpGKqEtmG1kv7y7crvcx55jBWgrGnkxraW7Nh2j9bZrFKdNVz3uDZwq0tSJSny kjWx2MSkwWkRYG/VLvG6i2P4b7cYf56FJ4DeWDCJQR6yZzYSNrfAU0NZrh90YFMnpXVK +IsdZp1S8rbJPxSnzDAYkHNHEYUltsKhLR6hoO0B9BZFIOn+S9JpMZ0n3UfOPd3TtkGG CqlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120411; x=1779725211; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=U1Zaaqmqxh7fW6GrkDq6rtfonmed+F1FtkVFlaeX614=; b=NTYr4KhtRZIgCt2B7vFzH/DbgrZLDE65HWaSwyrqXas1AQeQns2XOqMFHZ9DC4qaO7 7Zute0B0ZelLeKALdfm8dsAtSkgup8xCYi/VONl82RZZe5rcNIP8xceF1ZMEkIrJrZeG B91VXDI/33AKV5bMEORnRnwWyfsDzh50nNLxwuK+dYFUQhaplvYU5o8YGe8wvGcr0JOY TuT4cqRP12Btte+3bBNiCaSZO33CU2Qwrm9Rs8dBML1KCSFDX8LEa7Mte9gMlfxaEHlq C75hxt7TBVl85jsWA8mlJJRD008WeX7QJ5YbYjJLnmKCAUBHndAaRxKeR7iUMBVGRDxo zheQ== X-Gm-Message-State: AOJu0Yyz7MRE9F9tHx1L8YiJTNVsNKYf7xzAM8sPwNxCy9TVdEKJXXOr ivqXmSz0pa9cuSHaIgXsf11ptHS9QjdQKpkXm4o3ikgOKr8oPhbXEXzywpLrY/p8Cn0= X-Gm-Gg: Acq92OHjIJQuznziB5j0TuVaN2pxjOGN4ZDpLNYwZPOmMW7ZQkO8A3rsTbfqgr6iGSS DI8eSwhHvWqLmIU0HkRuWYvqkaJayTQdBpVaoZiu8rtQZMbe15gpQmQk4fFaaq5F9WpaEqUY6ck lVvBkO7Za24ydia2kA1KF1O7PFhwFb7qd6CBa2l878waLBBSOxWzZpXC/zPFnDrwo4sMm9QgNh/ Dot88eruUTbVe2Pt+jozCXvcmVXEBe2rjDBbEkr2bg7FHEIBu0SgrIDASc1P2d28/+oG4C+yf6y ajxrzoT3/q99+1+Zd6hGP6Zccbtv48qGnlNTZIB37cHx9ShiXa2zUgnby5Jc9efXl2qdtPIwwf/ XJMsNQuP4SDXvcuc6Z13Grc2ziWe45Imceye355u06aLNYRIc5nM08RVU7U5j7L1yPBiM1/iqh1 N2jKeXVci3vIrcLiFQiE8thoNoUeZzmqy4eFnoYht2 X-Received: by 2002:a05:600c:491e:b0:48e:978f:c45a with SMTP id 5b1f17b1804b1-48fed455991mr141851495e9.19.1779120411008; Mon, 18 May 2026 09:06:51 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:50 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:29 +0100 Subject: [PATCH 10/11] HID: hid-tmff: use 'hid_device_id::driver_data_ptr' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-10-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=2886; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=lVYU22Y5Ir69wDkvv7hToHs50FivmWy0WICMwJWBdsE=; b=axjHXWupj/sZvWPxQunoWU9ThNPQmQ0wuXyYuOba1+c5zKv+Mgw+jKBb55iNiBi6eqrD3Cedg MCa8mObBEbvDzozSrkBl9InK+UKJM48XwDwvc1m9RHXTpsWFQYilU+j X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= Remove the casts to (unsigned long) and instead assign the 'ff_rumble' and 'ff_joystick' variables as they should, as pointers. Remove the cast to (void *) during probe - tmff_init() second parameter already accepts a const pointer, so no further action was needed here. These changes improve readability of the code. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/hid-tmff.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/hid/hid-tmff.c b/drivers/hid/hid-tmff.c index 423f395d01ac..0d7e73fba0fa 100644 --- a/drivers/hid/hid-tmff.c +++ b/drivers/hid/hid-tmff.c @@ -226,7 +226,7 @@ static int tm_probe(struct hid_device *hdev, const stru= ct hid_device_id *id) goto err; } =20 - tmff_init(hdev, (void *)id->driver_data); + tmff_init(hdev, id->driver_data_ptr); =20 return 0; err: @@ -235,25 +235,25 @@ static int tm_probe(struct hid_device *hdev, const st= ruct hid_device_id *id) =20 static const struct hid_device_id tm_devices[] =3D { { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300), - .driver_data =3D (unsigned long)ff_rumble }, + .driver_data_ptr =3D ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304), /* FireStorm Dual= Power 2 (and 3) */ - .driver_data =3D (unsigned long)ff_rumble }, + .driver_data_ptr =3D ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, THRUSTMASTER_DEVICE_ID_2_IN_= 1_DT), /* Dual Trigger 2-in-1 */ - .driver_data =3D (unsigned long)ff_rumble }, + .driver_data_ptr =3D ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb323), /* Dual Trigger 3= -in-1 (PC Mode) */ - .driver_data =3D (unsigned long)ff_rumble }, + .driver_data_ptr =3D ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb324), /* Dual Trigger 3= -in-1 (PS3 Mode) */ - .driver_data =3D (unsigned long)ff_rumble }, + .driver_data_ptr =3D ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb605), /* NASCAR PRO FF2= Wheel */ - .driver_data =3D (unsigned long)ff_joystick }, + .driver_data_ptr =3D ff_joystick }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651), /* FGT Rumble Force= Wheel */ - .driver_data =3D (unsigned long)ff_rumble }, + .driver_data_ptr =3D ff_rumble }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb653), /* RGT Force Feedba= ck CLUTCH Raging Wheel */ - .driver_data =3D (unsigned long)ff_joystick }, + .driver_data_ptr =3D ff_joystick }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654), /* FGT Force Feedba= ck Wheel */ - .driver_data =3D (unsigned long)ff_joystick }, + .driver_data_ptr =3D ff_joystick }, { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb65a), /* F430 Force Feedb= ack Wheel */ - .driver_data =3D (unsigned long)ff_joystick }, + .driver_data_ptr =3D ff_joystick }, { } }; MODULE_DEVICE_TABLE(hid, tm_devices); --=20 2.43.0 From nobody Mon May 25 05:14:38 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 CB5223F6C4E for ; Mon, 18 May 2026 16:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120437; cv=none; b=l5D1n6KILBGW6KZVnbhZypAcPYVF6azdhi0uJAkzChUo7BGYxcD6RB0H21zdXCQQSg3hTLpgPnSK13sT/PJuBferdUFWfzYYVfQtdm52bEUk8li8I62/7KhpVgRdxD1+0dUxIhwmqpCGj6MrsGouQMRHPYAzKGGDYzx4W6CKHUw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779120437; c=relaxed/simple; bh=egSOONxdnqBhFwUZnKXnaBT3uMNM2lXVFquENOo2ChA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jYhWXop3YoVZkbNXMd4JazN6g7TMy3qqmmt5XeNqg4tP8W4XCWVuZJ7Ao3KBpS9rua2vWUcV0BEDRXMeURvpaLjIWWORHcw6Y7coOpUKw1h8p70yPvDH1crSnuhgDLXc3zzabCkfZTRsTbChq3bdgj7OuVkCBs4rhvjI3fZSlcA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk; spf=pass smtp.mailfrom=thegoodpenguin.co.uk; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b=smXU7tdh; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=thegoodpenguin.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=thegoodpenguin-co-uk.20251104.gappssmtp.com header.i=@thegoodpenguin-co-uk.20251104.gappssmtp.com header.b="smXU7tdh" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-48984d29fe3so27377785e9.0 for ; Mon, 18 May 2026 09:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thegoodpenguin-co-uk.20251104.gappssmtp.com; s=20251104; t=1779120412; x=1779725212; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=7qIz31yrxS9W/8Z/8yM7blQBiQ6xv2671X73kGvx6JQ=; b=smXU7tdhMmpFow6neuEK5euoW11b++ASaz9ATdLlfU8VFcWoRr1tTEVlBmsBzbDWQn wJ5NFU8sYddGJm1O3fySV73+ZyWQNXJwQUhTeWt7ZgCynM1m5XNs4Uqhe7+WaoOOS1ix Gt+GkJtetJNkEFaJcnny37gqxZHzBLjDWFdAZDrIw5Bgv+axq7U/L3N/Rrd0CH4NNN/c CuR9T4BKfOy+T9pm6gqNgj7s6pah5t5f4tu7Aj6bOMep5fc6YFWAU5JLu3gMxrs3QAOb UUlhjNXiU4bwEfYNfuqiF1HSyEskrokZufhPIsTrtiaknqsfevEyFTeh+k9Lo1TsTqWs T/xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779120412; x=1779725212; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=7qIz31yrxS9W/8Z/8yM7blQBiQ6xv2671X73kGvx6JQ=; b=gWvQcDkhm0kXmEscKDVYZfOmzWFrFXQpuTMxv5PL/OdikZ/tjIpQ7/oFDJ/pFWCjEx EG4pth4rscqLwib9pkdwDsT4hhY2NArBn5Kzm60sSaTIBMVtMr0uW2038fGbAIzX7n3d KkhKqrRkaZV2Dg8HYG2Ca7K8RCRV0ot6mjOtVpSvQXW/DOxATZSchVQBWurdzA6jBH2j ax/r6vjdOwx5eZxHGQocvO3UcBLsuhZYUQ9YG95pHcC1LXtQMjsAmtwzxV/80u/WYVee Cc1CrURrPAkIOzBmIY4KkehW5SXosltxQWQvPWaXalAx8S08YmdqMuNUvX09cQ+5Mluq g/wg== X-Gm-Message-State: AOJu0YxxNaaHuCgO9Lelfb0/Mvcfrd1Dj0bGrgTVQb3t+XYGDNG+TOw0 OHVh+XLAhZHgnNAX5D2cD4j8jDISK3dxyNnoB+iF1g0mkD2ylDqHyhZ0HmfQ34bKTEQ= X-Gm-Gg: Acq92OGwBYtuJ7A8AcVxj4Ac3/xp7ZzCqSnLvabR5wYm5UPBHTGKfkHg4IyeUmTSv2W q3NCcsEswatoUtvaYg6N7mI6n92reCp5HrRamYMafqATb9uXmEutXq2RUF70y8CakGdOkm37x5f lJKnml9fSQfQ/BE+5MbjapUoubPkTlt9MAapSNYD6ii3yC/KLM360OEmQHZSjF9MivWgIjUnjcW qekAh292OyxLKoIJl3hPW3GdSwsqwOSLBrHwOLOV4UOP1XPuB9TZSKRoM5WjLkaGrwjfoFuJQqM mFcISWNgixMRi+uqVS5KSg5I5its/ict7/GSa4bVQB3gYYUHZDv9KyV6eMKKmvQbvfbKJ79Tp4P BSuXXUovb2rWp4jSrATPNgjc7nfpvEx++MLQl0EiwXEYRl/GCu8aaZrwQ0KVSdJiY9/8KLE9vdy c0GEclOYgG/DlLyi4cenWe0Sshh24gYGRXKxIvQIyw5Owa1a7mdgE= X-Received: by 2002:a05:600c:3b21:b0:48a:f18:ece4 with SMTP id 5b1f17b1804b1-48fe6514dd6mr230750925e9.24.1779120412382; Mon, 18 May 2026 09:06:52 -0700 (PDT) Received: from [10.42.0.1] ([2a00:23c7:1d1a:9c01:de11:5404:1c7b:7b76]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm38867318f8f.28.2026.05.18.09.06.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 09:06:52 -0700 (PDT) From: "Pawel Zalewski (The Capable Hub)" Date: Mon, 18 May 2026 17:06:30 +0100 Subject: [PATCH 11/11] HID: wacom: use 'hid_device_id::driver_data_ptr' Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260518-mod-devicetable-hid_device_id-v1-11-a08e3989c283@thegoodpenguin.co.uk> References: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> In-Reply-To: <20260518-mod-devicetable-hid_device_id-v1-0-a08e3989c283@thegoodpenguin.co.uk> To: Jiri Kosina , Benjamin Tissoires , Ping Cheng , Jason Gerecke Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, "Christian A. Ehrhardt" , "Christian A. Ehrhardt" , "Pawel Zalewski (The Capable Hub)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779120401; l=3202; i=pzalewski@thegoodpenguin.co.uk; s=20260430; h=from:subject:message-id; bh=egSOONxdnqBhFwUZnKXnaBT3uMNM2lXVFquENOo2ChA=; b=dVhk87EFjnY6yHm068sDeHPuQYnPBbIgzk0uO5cKAKvTGUKV5ahCHhqpu0SV03NAC42o5kQ+l YAPXE+NtFIqCqjs94Eg4Q4Vo6Xqyljwu+vUjPJqB5d3t1NbG25ucraI X-Developer-Key: i=pzalewski@thegoodpenguin.co.uk; a=ed25519; pk=vHq4n9IonORH2GTzLv8r6CWAFHzgfBuNkQPXA8NSly0= Remove the casts to (kernel_ulong_t) and (struct wacom_features *) and use the 'drvier_data_ptr' field instead to improve readability of the code. Signed-off-by: Pawel Zalewski (The Capable Hub) --- drivers/hid/wacom_sys.c | 14 +++++++++----- drivers/hid/wacom_wac.c | 10 +++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 0d1c6d90fe21..25408676c5f6 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -2555,8 +2555,9 @@ static void wacom_wireless_work(struct work_struct *w= ork) } =20 /* Stylus interface */ - wacom_wac1->features =3D - *((struct wacom_features *)id->driver_data); + const struct wacom_features *features =3D id->driver_data_ptr; + + wacom_wac1->features =3D *features; =20 wacom_wac1->pid =3D wacom_wac->pid; hid_hw_stop(hdev1); @@ -2568,8 +2569,7 @@ static void wacom_wireless_work(struct work_struct *w= ork) if (wacom_wac1->features.touch_max || (wacom_wac1->features.type >=3D INTUOSHT && wacom_wac1->features.type <=3D BAMBOO_PT)) { - wacom_wac2->features =3D - *((struct wacom_features *)id->driver_data); + wacom_wac2->features =3D *features; wacom_wac2->pid =3D wacom_wac->pid; hid_hw_stop(hdev2); error =3D wacom_parse_and_register(wacom2, true); @@ -2839,7 +2839,11 @@ static int wacom_probe(struct hid_device *hdev, wacom->hdev =3D hdev; =20 wacom_wac =3D &wacom->wacom_wac; - wacom_wac->features =3D *((struct wacom_features *)id->driver_data); + + const struct wacom_features *id_features =3D id->driver_data_ptr; + + wacom_wac->features =3D *id_features; + features =3D &wacom_wac->features; =20 if (features->check_for_hid_type && features->hid_type !=3D hdev->type) diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c index da1f0ea85625..034bde5af2df 100644 --- a/drivers/hid/wacom_wac.c +++ b/drivers/hid/wacom_wac.c @@ -4947,23 +4947,23 @@ static const struct wacom_features wacom_features_0= x94 =3D =20 #define USB_DEVICE_WACOM(prod) \ HID_DEVICE(BUS_USB, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ - .driver_data =3D (kernel_ulong_t)&wacom_features_##prod + .driver_data_ptr =3D &wacom_features_##prod =20 #define BT_DEVICE_WACOM(prod) \ HID_DEVICE(BUS_BLUETOOTH, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ - .driver_data =3D (kernel_ulong_t)&wacom_features_##prod + .driver_data_ptr =3D &wacom_features_##prod =20 #define I2C_DEVICE_WACOM(prod) \ HID_DEVICE(BUS_I2C, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ - .driver_data =3D (kernel_ulong_t)&wacom_features_##prod + .driver_data_ptr =3D &wacom_features_##prod =20 #define PCI_DEVICE_WACOM(prod) \ HID_DEVICE(BUS_PCI, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\ - .driver_data =3D (kernel_ulong_t)&wacom_features_##prod + .driver_data_ptr =3D &wacom_features_##prod =20 #define USB_DEVICE_LENOVO(prod) \ HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, prod), \ - .driver_data =3D (kernel_ulong_t)&wacom_features_##prod + .driver_data_ptr =3D &wacom_features_##prod =20 const struct hid_device_id wacom_ids[] =3D { { USB_DEVICE_WACOM(0x00) }, --=20 2.43.0