From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 306F138C2C3 for ; Sat, 4 Jul 2026 05:57:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783144669; cv=none; b=J0gh/7gAf0eb19LXZIHrdhRAXfGyVRnB2AG4ENVzMviLNHDQlpKc8tL8eR+6k5n0ASv/TrrDZV317qegOo+P7MWVdwA3q121k2ARvpTJ+WuotKcuUf96KAMHzM0QNLUSs2K15wpt/jhjTZ4xiYdeVJtrOEEF8rfNBcV3+KWy50w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783144669; c=relaxed/simple; bh=a8jRBRl/22LOCeRI2rwXY5+djprns8HyM7TedOnmb/I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PxwaVrY6wOJIqf/tegEYvWwG49iBw/o7alFJbMIR8GLcG4jMs8Vzs7nKrB1PAFABEaKHnvrMF/g5T4+sSSX2pf/nsweRURiw7W4pUVuIMcySnq8cFIB9sQFgqPcnDGsEYDmhMHEAQbG6nTh46rS4E1+L8K/buzeesUAzT2ZeEGA= 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=MrfjbyaL; arc=none smtp.client-ip=209.85.216.44 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="MrfjbyaL" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-37ff8e0ad0fso1189945a91.2 for ; Fri, 03 Jul 2026 22:57:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783144664; x=1783749464; 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=As+a+oXMaauuXL6cjX0g2Fcb3J4Vh+vaEl8MbjsXlXU=; b=MrfjbyaLypr0OgKC96y6tkkbkvgex8ArGeWrWb7knEyL16mTLAoty9GJaruwImOQSD xZ7dtVHfnL9G4VphQP+JEAafyceCNyy0DL78rgsUlzECQKqheEqBWmMjXBvK9bjlIjkR ZWEAUz5rBQtyHuoRzOB1K7iwQ8tKdilfcxdp0A+i3sl97jnGssoe1Wixp5UzK/mUY9Qz hFAyNpPJ47hFSCBfCraonPkXZqUO9N7BCw52sBeN6l/gsfS/MK64zg08f9J8Td2Rmety jBe1emNmHAYT5n+aSuvNu8/xdL1EhCQYiDApuXChQ/q/u7kC39RHsDgA+ZMKK748K6Z/ 2yRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783144664; x=1783749464; 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=As+a+oXMaauuXL6cjX0g2Fcb3J4Vh+vaEl8MbjsXlXU=; b=mGyTn7uhj0QY4o/H88ue4M1Am+sPcmO3GHjycaT2Z///5/XQzwk6a5e7gSOmkVjTRH 7Vz8VAkGHTsCpILAKKlLCwmdumOT1u222rDluueLhuKfS2n6CHe/+t2ZL5GqXRSOHS72 8Ubochq8jWrdIYmF3dqTWqRVULYJgr4At3dR3zYiTJOyg0Dv2DX9IjoJHgSClNTSCDCN pUAYG7wCNZBObPv/QBnRpFWDT+nrDyvCFynxIyWI6s6f2I/hsmSBLC5Pg0E4mOp0YVUJ HKVt1iACXJB9gQMI9Y0XZpjWji3oXxLXJJQl4uPV/d2HehTgAi+cksx7HuAiqw20a2U5 qjsg== X-Forwarded-Encrypted: i=1; AHgh+Ro2hEI+uwKWOP7L0z/9f2glp41Yhl5s2u1Um8zRw+odjt4vh5Gr4c0eQH+i25ee53VqCmbcscOsFDjnXKY=@vger.kernel.org X-Gm-Message-State: AOJu0YxZY4dzUURX9zMnECFOB95K3hsRGfCYxnqXh8xCAiLUsq6lgPk/ PU6YM0yFLc5Cp0fWaBBPJp2Jeqixs2mzQ8YraS3r64wQ7S0FK4C3C3oV10uvpQ== X-Gm-Gg: AfdE7clb16W4cTbWIm+VIMkhK9kdBJDZKnbTn39UXRVNBWjWTNOxHA4rWdevJ0EAH58 0K6svcbUFxavPn19wi67jwyGUaFJjuofG3OFSNL+SOmm5HIh2J12BeGFxqKpDAdKKl/m6RokHw8 JydjhFnch2lJOx3Rq4lWUQeONRpMpqX+yTrkG/KBza3SMtgNqBjuyAK7I3Q/3Hp8NyqaQRUhnur CVPEA9CLbf989OJbGYJPFR6xIVdvo+X1+VZEoCOwVHS+Z0WlvjuihAhs3gMh4F22DVdBLV6K7gH iOTzrVIJ7OWAzxxFMmPZm/sdnbgoF+XTlhp/3ITOuvigYpIm5YL6qe6j0OlT5NtP1Yr6SadHfZM Fq9CCwq68Aj7oDf/qP2SHvb5LU2dB0lIq8NvI3PzQuK/zq+EVG80tSvS6ZpJb85z3CuBehHaM80 4tiUF3COOqluIB3iY5Y1r7XJS+LG1dkqJOQHyQd0KEKoxuAz7N30dwrp1KBrQoHMjWRb3KQWNfD UJTyiHWOdflcg== X-Received: by 2002:a17:90b:58e8:b0:37f:b16a:cc23 with SMTP id 98e67ed59e1d1-3829f5ea622mr2048940a91.23.1783144664401; Fri, 03 Jul 2026 22:57:44 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:880:86f9:3b00:6746]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30f0b813cd9sm26262412eec.8.2026.07.03.22.57.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Jul 2026 22:57:43 -0700 (PDT) From: Dmitry Torokhov Date: Fri, 03 Jul 2026 22:57:30 -0700 Subject: [PATCH 07/26] Input: maple_keyb - implement open and close methods 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: 7bit Message-Id: <20260703-b4-maple-cleanup-v1-7-41e424964da5@gmail.com> References: <20260703-b4-maple-cleanup-v1-0-41e424964da5@gmail.com> In-Reply-To: <20260703-b4-maple-cleanup-v1-0-41e424964da5@gmail.com> To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz Cc: Florian Fuchs , Adrian McMenamin , linux-kernel@vger.kernel.org, Dmitry Torokhov , linux-input@vger.kernel.org, linux-mtd@lists.infradead.org, linux-sh@vger.kernel.org X-Mailer: b4 0.16-dev-6911d Instead of polling the keyboard constantly from probe, implement open and close methods for the input device to only start polling when the device is actually opened by userspace, and stop polling when it is closed. This matches the behavior of maplemouse and maplecontrol drivers. Assisted-by: Antigravity:gemini-3.5-flash Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/maple_keyb.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/drivers/input/keyboard/maple_keyb.c b/drivers/input/keyboard/maple_keyb.c index 623d7951405b..a245774acc55 100644 --- a/drivers/input/keyboard/maple_keyb.c +++ b/drivers/input/keyboard/maple_keyb.c @@ -140,6 +140,24 @@ static void dc_kbd_callback(struct mapleq *mq) } } +static int dc_kbd_open(struct input_dev *dev) +{ + struct maple_device *mdev = input_get_drvdata(dev); + + /* Maple polling is locked to VBLANK - which may be just 50/s */ + maple_getcond_callback(mdev, dc_kbd_callback, HZ / 50, + MAPLE_FUNC_KEYBOARD); + + return 0; +} + +static void dc_kbd_close(struct input_dev *dev) +{ + struct maple_device *mdev = input_get_drvdata(dev); + + maple_getcond_callback(mdev, NULL, 0, MAPLE_FUNC_KEYBOARD); +} + static int probe_maple_kbd(struct device *dev) { struct maple_device *mdev; @@ -167,6 +185,7 @@ static int probe_maple_kbd(struct device *dev) memcpy(kbd->keycode, dc_kbd_keycode, sizeof(kbd->keycode)); maple_set_drvdata(mdev, kbd); + input_set_drvdata(idev, mdev); idev->name = mdev->product_name; idev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP); @@ -175,6 +194,8 @@ static int probe_maple_kbd(struct device *dev) idev->keycodemax = ARRAY_SIZE(kbd->keycode); idev->id.bustype = BUS_HOST; idev->dev.parent = &mdev->dev; + idev->open = dc_kbd_open; + idev->close = dc_kbd_close; for (i = 0; i < NR_SCANCODES; i++) __set_bit(dc_kbd_keycode[i], idev->keybit); @@ -186,10 +207,6 @@ static int probe_maple_kbd(struct device *dev) if (error) goto fail_register; - /* Maple polling is locked to VBLANK - which may be just 50/s */ - maple_getcond_callback(mdev, dc_kbd_callback, HZ/50, - MAPLE_FUNC_KEYBOARD); - mdev->driver = mdrv; return error; -- 2.55.0.rc0.799.gd6f94ed593-goog