From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC3C423FC41; Mon, 31 Mar 2025 14:56:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743432974; cv=none; b=T8BxDmdpL3EENGC5ohx9bssuLfK1iGBAUTW2ybjRq522A/mahAF6mfld8LmHK8L8vvSTT/I9p9DcmyY4WCsIbVeq77ZdsTcdqK7ScSpLJjs8mkAzlq5yva/Pk+T+lgzmVHLj1Kxrgf0iVq4c1/U53tOzDuwadghiJZTh7o2Ho+o= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743432974; c=relaxed/simple; bh=MX+g4VoqM0/lrXLGYXv4vY4tQ5SYGbudJSrDoI/63sE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=hQESrMHoxaLDQTE9J3y2yxfxaRTVo1o6TrNARs6hA0qwChy0fuf03EOG5REOVJEv52+r+ntPQYZ1Le3CMBkojY1jhYNNBkEMOXdTpeU9U18LP/xZPDUkKePF13/53jobeSiuclZeZvU1WCF9kL5AELLeSElTPLGm9oYmH+kyt/8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kDnaFt/e; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kDnaFt/e" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 48EE7C4CEE3; Mon, 31 Mar 2025 14:56:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1743432973; bh=MX+g4VoqM0/lrXLGYXv4vY4tQ5SYGbudJSrDoI/63sE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kDnaFt/eX1Np2FQQir5UPG7B7ZKY3xXOIK8q0fGymZz0/pP7ehTub1SYckQgUm517 ESVA7WD0Gp+3sM+O/mjXp00Apc2Ltdn1uLLUfkb6/n5spC+e1kN78RqGxDAx9JdRAN geqeancmPn2QzAmK+JSfTMqONmRbPMKx0J6ArVOEjUrVFyqJuQ3lqIFw2A5XfePc4Y fFD3jI4PqyPZX8MvsavppurCzrJwNEcwgWqOEHQIiL3NuodZ1BFnHrAKC8oaGYJhNN 6JwGUMG7C7qlJxDy6WauwgToVeTn7keQWO3AqtXWrDj1Uq1E1D63ed6Y6SVu0Jn5XF 40l+V8zCRlWhQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: =?UTF-8?q?Tomasz=20Paku=C5=82a?= , Makarenko Oleg , =?UTF-8?q?Micha=C5=82=20Kope=C4=87?= , Paul Dino Jones , =?UTF-8?q?Crist=C3=B3ferson=20Bueno?= , Pablo Cisneros , Jiri Kosina , Sasha Levin , jikos@kernel.org, bentiss@kernel.org, linux-usb@vger.kernel.org, linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 6.6 06/19] HID: pidff: Add PERMISSIVE_CONTROL quirk Date: Mon, 31 Mar 2025 10:55:47 -0400 Message-Id: <20250331145601.1705784-6-sashal@kernel.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250331145601.1705784-1-sashal@kernel.org> References: <20250331145601.1705784-1-sashal@kernel.org> 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 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.6.85 Content-Transfer-Encoding: 8bit From: Tomasz Pakuła [ Upstream commit a4119108d2530747e61c7cbf52e2affd089cb1f6 ] With this quirk, a PID device isn't required to have a strict logical_minimum of 1 for the the PID_DEVICE_CONTROL usage page. Some devices come with weird values in their device descriptors and this quirk enables their initialization even if the logical minimum of the DEVICE_CONTROL page is not 1. Fixes initialization of VRS Direct Force Pro Changes in v6: - Change quirk name to better reflect it's intention Co-developed-by: Makarenko Oleg Signed-off-by: Makarenko Oleg Signed-off-by: Tomasz Pakuła Reviewed-by: Michał Kopeć Reviewed-by: Paul Dino Jones Tested-by: Paul Dino Jones Tested-by: Cristóferson Bueno Tested-by: Pablo Cisneros Signed-off-by: Jiri Kosina Signed-off-by: Sasha Levin --- drivers/hid/usbhid/hid-pidff.c | 3 ++- include/linux/hid.h | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c index 503b22feacdbb..5a57ba0d7026a 100644 --- a/drivers/hid/usbhid/hid-pidff.c +++ b/drivers/hid/usbhid/hid-pidff.c @@ -969,7 +969,8 @@ static int pidff_find_special_fields(struct pidff_device *pidff) 0x57, 0); pidff->device_control = pidff_find_special_field(pidff->reports[PID_DEVICE_CONTROL], - 0x96, 1); + 0x96, !(pidff->quirks & HID_PIDFF_QUIRK_PERMISSIVE_CONTROL)); + pidff->block_load_status = pidff_find_special_field(pidff->reports[PID_BLOCK_LOAD], 0x8b, 1); diff --git a/include/linux/hid.h b/include/linux/hid.h index 8876d5f0cd87f..a06f38c1441ad 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -1219,8 +1219,9 @@ int hid_pidff_init(struct hid_device *hid); #endif /* HID PIDFF quirks */ -#define HID_PIDFF_QUIRK_MISSING_DELAY BIT(0) -#define HID_PIDFF_QUIRK_MISSING_PBO BIT(1) +#define HID_PIDFF_QUIRK_MISSING_DELAY BIT(0) +#define HID_PIDFF_QUIRK_MISSING_PBO BIT(1) +#define HID_PIDFF_QUIRK_PERMISSIVE_CONTROL BIT(2) #define dbg_hid(fmt, ...) pr_debug("%s: " fmt, __FILE__, ##__VA_ARGS__) -- 2.39.5