From nobody Tue Feb 10 05:26:55 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 8FD0A3612D8 for ; Tue, 3 Feb 2026 17:45:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770140741; cv=none; b=CrTtfONhsWk6WHmr0i7PkeKW0tS0xIaxSbll3ksec3aw/WyQwR/48kue75bprqDLJ5Z6+sUOgYFa9EWJNCnklvouzebYA78EmTCWqaPB4d05UzRFI2WzXzUE4t8lNNQ5QLWp4XIaBelGAwtfZMRRp2eNMs5KDNtSnC6CG9xH+Lw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770140741; c=relaxed/simple; bh=UmM/EFR5p4e/Ka3/5sJVIS3R5eLWlyTt1qf6h8ubdhE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VcahuYtx3vOnhuniO4AyYzEqEMOKUfIkUka0xCmmkC6W9RMJnD6Mp6rCwlGd+ktUKSXF7c5iVXADTVLiYFqsTE1pK6lvKi97/dUAgZfuo6etNxkfre0Pm7MMia2VcIIMcAyJGmKKl6xXEFHQC2DmDr42fQR5Q0f99mcGTc/UwgY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dQtFNiDX; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dQtFNiDX" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b8ea0a386cdso96466b.2 for ; Tue, 03 Feb 2026 09:45:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770140738; x=1770745538; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BQaGsVyRIVNSv/UVCCLU9KGE4wXIMnAIjksSPCQ051Y=; b=dQtFNiDXkPORaZc9pQyWffgpG14BhXRqw7oqcT+ptcLF+LayPkqzJBYUF424w1SZeD lAOxJkpsCzFOv9OMaeL44OnKal1PZotokGuqjMGZFTxBtIQ5gqdw1aW7HT81n7Yc49XZ o2EFuHdo52C0GOd53DEHfMlYpnYfSwnS1TkfD1I02iitJCPVHqBsXlcrUNHrG1ao/OFV hdKYZhD83uxywteBfdIcyK7D5b+UzXcKANJ63HLLa0YfW7nMef6W3NU1QaLk4MDfgdYC O1O+3Aql2amgJNj0m2osVMwdm1lk74Bf4h+eOOUPlrb9Y390NMOrIi4qHT6JJiK0GP3M R8Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770140738; x=1770745538; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BQaGsVyRIVNSv/UVCCLU9KGE4wXIMnAIjksSPCQ051Y=; b=l51C5Fyv7wdvMyVX+cXtuJaSoSvrXgXdv+oReRovvjhcDzw1rnQwXfiHhatsEQQ5Rc w459OEZgz+TK+Qil9UHHRll2vWN9rmH7HryQZNa0O6jKSrlSNdsxkOcVzAmXb2vMomRn 2edGJaqOi7LOzzd+rpSm9RH4LmQJ059jgV5NFU6aqQd7sqAlhAr1OUEj1ND7kEKmU99o sxCrUYfTwGj73EFC7w+R6H0CrK4j5xGgl/xMSBJRUOefAZ0AEsZ2sP1hSHHtyawDGZh1 pSXO733aTvzScfh/R92BKvJYs1kZ5VYQTXk1QjaUHkuM52u1OElal2XvbxgO9I/3a8hB 96qQ== X-Forwarded-Encrypted: i=1; AJvYcCURO5z31yNuAJgcZev+OwFZn0rfu59O/eHhzcw15Mz6Y2Ewj7i0x6Z2GVJWYpEIiVu0VS8ahBleqyHQzLg=@vger.kernel.org X-Gm-Message-State: AOJu0YxG9bDvmldnueFMnvrOQGTsVec2ZxC5Lxyc3jah+o0S3faXdbZf yMaJqyAGmTPIhd1JSJuVjiDQscscSK2k0B3pHnzOHhiwX4umkdbJDpoY X-Gm-Gg: AZuq6aLQCR4ZyFjAvK1tyRAN5zth95VuUXLllE+COVOKe/O/FW59guYpg2euZseySFu hXFiQpG0Oi8hO2xO9AXTG0PbA9FPUCf4G7nt/5t2tvzItuwTmd9W0qeSrewsyQoJottfQ47Ko4/ T2aBf9ytTPJjSouuDDHtQW8ynXu2KTNRutAG8QyuDmt0wQb24+DWfFbFuStVJL74gUkgxj3FrZS no9+3qS9vzqsWmc4fje2wxA/UQDoE1+hMyzRntMv76neBt+KiAGIQnbmdRoufs4Rng8cnrwGJk0 MMm7y9rMwhCxHijQTW98c0f0H6bobmWGMlmBaLzb3leoAT2b/dtbk3Cy6FBmRcEoMDZtxcf+U+R CJElr8gtvCMqFxPlkaqkw4nPPe8xdiS66dc2xJGKgPhNtfZgJIiUe9CpvtbxUcd50DpY4MH+NTW V8OqLTCm6y/Zo8LQolJSp+4i/54NOYacqPjQw4SAoYNhVvib60bfndtHuzuFW2ajEZ X-Received: by 2002:a17:907:1b09:b0:b87:3c3a:cb7e with SMTP id a640c23a62f3a-b8e9f658f89mr9316066b.6.1770140737315; Tue, 03 Feb 2026 09:45:37 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8e9fef001csm5078866b.44.2026.02.03.09.45.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 09:45:36 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: jikos@kernel.org, bentiss@kernel.org Cc: oleg@makarenk.ooo, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, tomasz.pakula.oficjalny@gmail.com Subject: [PATCH 1/5] HID: pidff: Refactor field quirks detection Date: Tue, 3 Feb 2026 18:45:27 +0100 Message-ID: <20260203174531.2866644-2-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260203174531.2866644-1-tomasz.pakula.oficjalny@gmail.com> References: <20260203174531.2866644-1-tomasz.pakula.oficjalny@gmail.com> 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 In preparation for additional quirks Co-developed-by: Oleg Makarenko Signed-off-by: Oleg Makarenko Signed-off-by: Tomasz Paku=C5=82a --- drivers/hid/usbhid/hid-pidff.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/hid/usbhid/hid-pidff.c b/drivers/hid/usbhid/hid-pidff.c index a4e700b40ba9..68049d5d76b3 100644 --- a/drivers/hid/usbhid/hid-pidff.c +++ b/drivers/hid/usbhid/hid-pidff.c @@ -13,6 +13,7 @@ #include #include #include +#include #include =20 #define PID_EFFECTS_MAX 64 @@ -1053,6 +1054,11 @@ static int pidff_find_field_with_usage(int *usage_in= dex, return -1; } =20 +#define PIDFF_MISSING_FIELD(name, quirks) \ + ({ pr_debug("%s field not found, but that's OK\n", __stringify(name)); \ + pr_debug("Setting MISSING_%s quirk\n", __stringify(name)); \ + *quirks |=3D HID_PIDFF_QUIRK_MISSING_ ## name; }) + /* * Find fields from a report and fill a pidff_usage */ @@ -1060,9 +1066,6 @@ static int pidff_find_fields(struct pidff_usage *usag= e, const u8 *table, struct hid_report *report, int count, int strict, u32 *quirks) { - const u8 block_offset =3D pidff_set_condition[PID_PARAM_BLOCK_OFFSET]; - const u8 delay =3D pidff_set_effect[PID_START_DELAY]; - if (!report) { pr_debug("%s, null report\n", __func__); return -1; @@ -1080,17 +1083,14 @@ static int pidff_find_fields(struct pidff_usage *us= age, const u8 *table, continue; } =20 - if (table[i] =3D=3D delay) { - pr_debug("Delay field not found, but that's OK\n"); - pr_debug("Setting MISSING_DELAY quirk\n"); - *quirks |=3D HID_PIDFF_QUIRK_MISSING_DELAY; + /* Field quirks auto-detection */ + if (table[i] =3D=3D pidff_set_effect[PID_START_DELAY]) + PIDFF_MISSING_FIELD(DELAY, quirks); =20 - } else if (table[i] =3D=3D block_offset) { - pr_debug("PBO field not found, but that's OK\n"); - pr_debug("Setting MISSING_PBO quirk\n"); - *quirks |=3D HID_PIDFF_QUIRK_MISSING_PBO; + else if (table[i] =3D=3D pidff_set_condition[PID_PARAM_BLOCK_OFFSET]) + PIDFF_MISSING_FIELD(PBO, quirks); =20 - } else if (strict) { + else if (strict) { pr_debug("failed to locate %d\n", i); return -1; } --=20 2.52.0