From mboxrd@z Thu Jan 1 00:00:00 1970 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 3C0AE2E719B for ; Sun, 19 Apr 2026 19:59:29 +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=1776628770; cv=none; b=Ad3SttbpZ1CqUJ+Qh7h504eCq2OjFWn6o6mNcty572/yl6+aOaQ1saWj+OiFsF/3FREErkLsWpXZO5y9LXjZSgdwwBlLN5CsziASG1CvXhUIMu5/Zo/3qkMuDALc3nZ8zNSKfKPFaML/hb4/bHmo/ELmzapIvFDUwxNDHAa9nG0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776628770; c=relaxed/simple; bh=yYJIIth611iq11YOjRUmN/jW4oJDgxU8uYIkrO7H0k0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=BF8f9xSO54rd3iFCrVpCoC9SFrp+6FtIECkditjSdmBn84Pvjj/HQZej7zN+CXlYkGCuypPTpuuXSxH9RtozuJmIKUTVJqZRfRa0LmRzVpJaL8qYOLu0mQ4QTxlPyWUcsMFuiA1ddglzqnSF2L4HwW9BoG9MHMrv2oTR/F+NL/U= 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=qz8f6nLh; arc=none smtp.client-ip=209.85.128.48 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="qz8f6nLh" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-488b0e1b870so35247795e9.2 for ; Sun, 19 Apr 2026 12:59:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776628768; x=1777233568; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=kmFIan17mu/w8oo/YbLoeCX4Y+0PS0/zX66M8FcpkFo=; b=qz8f6nLhaUA7YsFEkLJYkm0czyiJLFNfn6eYfezcZuw/MTn6r5wsLbslJa6Y7MG+Wx J2xwdNjBjRa2IKM5yFa/rgWpCq6asDM8hrwK/JeblrU1fa25tdG7KAGvnxNWeuAF2tOX 6eOboACK56tFK5tb+MTmtHisi2hiq7DjIlzBhPbxKIckydWyQm6vI7biMRin4blO3D+C xNt5T5Bib19VRfem5m7j1Ex7I8W3trNC9vf8SAVNvh2yKzCJEa+/Ajpg0ux6Z1JLhj0I LJa+LJofTIWdJGlQZOE1HNR7pINh1axpceed9vwRi0gtKx4QwXEPszEqMBqgvRXG8TpK JBSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776628768; x=1777233568; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kmFIan17mu/w8oo/YbLoeCX4Y+0PS0/zX66M8FcpkFo=; b=niEJyOsJxfJY/uDDPwTXF1MMWN6/0rDgenU+uR0z9C09cFUEUH1SvVtYkdZePGdFLR hFWLWAZS/A7YSqxmzrr4zVS6Iq7rRqoLQpcQanxxMFAoiGfxjpRr2dyh40K0fCHeRpee d6ykOeQbszxX83qLNXg+EI+JF3K9BxrHJnYhvI5eQUxJiYjr2spHi2qe2Z/c/KRfVLzQ HAWNjoZN6SyiC++Hq4Ev1ie3epUqOu6DyjSEPLAftRyJfandOY9d23SVaU1jX1zpL0W2 zMKEc1KOjK+E8DW/OKCMk6IdLu6emv0H4grCpxaFETZPJiifu0E6ZOUny/8BX+PR2QeU fs5Q== X-Forwarded-Encrypted: i=1; AFNElJ8YSB+Anxwn0ykb682rRZdT9LTu87RHnsMF0UaxyINKNtRzGTtjEAfjYki1BpWw14qQRRY9CBdEDnqi2Qs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/mOJa4G7rmD2lAE8bnxYJ4jrh5MBbSPb7vTA2jLg1Pf3au8I7 XOHpBxWRB5PlaeuSa9lhAHn3oR7JsLaJZk+6y6KJjssjm+gP1bP4CSD9 X-Gm-Gg: AeBDieu4hPhw/WkGJiMgzpadlMsKiQgZyBeZci+ME4F21013McOUn8uXrX5+WUd9+KM JevUcSPqfwAjyG0dYuL9KhsU0/InsN42OocBz8ZuCfeMvM8N+vJxTYwT2+ER6OUoy58f26ODJGe G2PYMKPIRAe27BT6P7l1v4WFlQUg0PJU+hMT5ri9UTAiSTwwATfXcs4x8zUjAThgN9Bd1aZj7NL K7chQYUuKB7WlAuofEu93aaC0JCwAwzyc0ly3/imQ278Io4K5H/wj0oShrQYaSlwKiLZNuqOzPX aAI8z/fyrbLF8IiEbWCZHN9aMg4jcEY6JWJnU3nobOaB30jvVHRhfoelZVZauK9drH7vqXVwaEy X+2EKZsi8+XRKO0ctRO4/sq+DsdxENOp/3gY0vUkZrDAFeZGKx+lYTsIcVpJ/hW6bF5M3R7BGpn LgbC2uVpWt4MNazBMVjZg= X-Received: by 2002:a05:6000:2081:b0:43d:30b4:1859 with SMTP id ffacd0b85a97d-43fe3db2edfmr15961422f8f.7.1776628767526; Sun, 19 Apr 2026 12:59:27 -0700 (PDT) Received: from fedora ([2a02:8071:50c5:5c0::d908]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43fe4e46471sm22482179f8f.28.2026.04.19.12.59.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Apr 2026 12:59:27 -0700 (PDT) From: Wadim Mueller To: linux-iio@vger.kernel.org, devicetree@vger.kernel.org Cc: wbg@kernel.org, conor+dt@kernel.org, krzk+dt@kernel.org, robh@kernel.org, linux-kernel@vger.kernel.org, Wadim Mueller Subject: [PATCH v2 0/3] counter: add GPIO-based quadrature encoder driver Date: Sun, 19 Apr 2026 21:59:05 +0200 Message-ID: <20260419195908.12202-1-wafgo01@gmail.com> X-Mailer: git-send-email 2.52.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit This series adds a new counter subsystem driver that implements quadrature encoder position tracking using plain GPIO pins with edge-triggered interrupts. The driver is intended for low to medium speed rotary encoders where hardware counter peripherals (eQEP, FTM, etc.) are unavailable or already in use. It targets the same use-cases as interrupt-cnt.c but provides full quadrature decoding instead of simple pulse counting. Features: - X1, X2, X4 quadrature decoding and pulse-direction mode - Optional index signal for zero-reset - Configurable ceiling (position clamping) - Standard counter subsystem sysfs + chrdev interface - Enable/disable via sysfs with IRQ gating Tested on TI AM64x (Cortex-A53) with a motor-driven rotary encoder at up to 2 kHz quadrature edge rate. Changes in v2: - DT binding: rephrase description to describe hardware, not driver/sysfs behaviour (Conor Dooley) - DT binding: drop redundant example without index GPIO (Conor Dooley) Wadim Mueller (3): dt-bindings: counter: add gpio-quadrature-encoder binding counter: add GPIO-based quadrature encoder driver MAINTAINERS: add entry for GPIO quadrature encoder counter driver .../counter/gpio-quadrature-encoder.yaml | 60 ++ MAINTAINERS | 7 + drivers/counter/Kconfig | 15 + drivers/counter/Makefile | 1 + drivers/counter/gpio-quadrature-encoder.c | 710 ++++++++++++++++++ 5 files changed, 793 insertions(+) create mode 100644 Documentation/devicetree/bindings/counter/gpio-quadrature-encoder.yaml create mode 100644 drivers/counter/gpio-quadrature-encoder.c -- 2.52.0