From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f173.google.com (mail-dy1-f173.google.com [74.125.82.173]) (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 EE51B2DF68 for ; Sun, 22 Feb 2026 00:37:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.173 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771720646; cv=none; b=BgxLS4mu+sNqvPvO+J36Fp2VxGCoGrXIjvoECDPKYoe73+kPChrP8zHNOIYAX5o4pIy3RlPYM7TO7IFEGKKpL2PWVFjDt+J2xMS0rx//LyVK7TTDE4lCRjYuDHNrtfZFCeaKngnkzqTnJfkQyS6QB9S/VkHegvWAnSJYQC+iO3g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771720646; c=relaxed/simple; bh=hLvjMkh6hXEkiLWKyvozmQcSnbRn+eBjFoiwAf52Zm8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=DGdmJuoI3GvTisTTPerT4rxQOzStHHuCIOZo7h3AAgQVcj6GqH7YwRv0Hssydn7tCx/Z8KzZtsgQ3HmKmiZJdZzVTewV6TrWiC05BHAKcRFrYgscbZHsc+92JdOSck4pgG2vlWw5yq5BfhISdnuXTNLE/7mbjf+uAwa4QE7b7K0= 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=Wk9zY7/g; arc=none smtp.client-ip=74.125.82.173 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="Wk9zY7/g" Received: by mail-dy1-f173.google.com with SMTP id 5a478bee46e88-2baa098ffc6so2987203eec.0 for ; Sat, 21 Feb 2026 16:37:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771720644; x=1772325444; 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=D9VQyZPUVBKtquLyDlkewfzJ1/s13aoNaQBA0/wQfDo=; b=Wk9zY7/gryD+kX/pdvBie5RetaFOI5a51kE0taBDOHOXSNoSyxAhy/npGCew/Sdzvp IjVgxRPlyZISKAYTZS49WPAn5lPLD/l37LxEH+NanRB0r4pGB9g2IUOX2qEt3py8l3J/ rrcat1VMRiQ6XO3HJlghSDMyN61g8oW4UUWVmtbCg/9q/48VZ4mzCRJwqPHr8J2kmjQQ ZBkasAjDZtG11pMXIOCWQVePCYu6poBCNIzwFFjjP25ledPoHEn3PzAc4iZZgAO5JcEc dByjw5Y7RLKAcnMju/Dfu58YHI2OESoEXiEE2GDr67ajp35kib6WhsBiVGihOXbk/aLM 0NhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771720644; x=1772325444; 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=D9VQyZPUVBKtquLyDlkewfzJ1/s13aoNaQBA0/wQfDo=; b=pgGPt0GPNWYyqEU39FVmy0WknWigzQQ3jTz3Bj3gDg7l78yn/3aD0Rq0mbbCc1ln/s 0RnmroZ4DtgRZ3VE9Uf7woFjCww9trUHVUh7WcJqT/drLdcXAv3j62wYHZLKIWptavU5 8pwja/UJjdriolEhxh8+PT3a1Srqb0G6rKxnWBbcFzpQfmvgdgcTECvnEzXgwqqLm4VH F8bGXx3OhXrDVBTzqGZjIaF+4mT+W7AjmmNh4r7P4DCHQjOjYGzKedqneZY88O2sLb8V tmwibPNmmnI34L16ZPzzVwbHH5j1ukL/dbMWDYnqSudCcjIECYfz00q6GkMRbD5FCNRS 45jA== X-Forwarded-Encrypted: i=1; AJvYcCUMZ/iWMESyT02mIkduc5E70u7hFvXo28JOo2Xc27BOuPxD3GGFGU2BiBxD4zt6ji/zM4hTUn8R0wiTU0o=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2b22CxxQXJ9zuoOizfJjC2Ibfyg/omR6QOtqziHzHqHpEzV6K IYgdo0alUw1VNUji+p+jcQKuSuGhXRaIA9+UeBSTTharPn3TQn3pSZTP X-Gm-Gg: AZuq6aKxCfq/k82P7jWbfVsDx+hMsidpnBeMWa5uKb+lfYfpyAtXwdPC5djo9adyybV x52ttXf+/d9XGoowQsdSCGrRtB6KU8nF+1jyCAKklug4HqNp2po4AUtog/hGPKKYFs0ubNuq+Lz X6kqyv0rI/WtOeqfNlfcuSnfqI7siJETRBMyS27lBo9lDogr3UwQar8ENYi4HfHeKiJgGClNzbh rGA61BZrOwVMAe+V7tBspAK6uHJXiUFjSlxewMVfgFrT3jh7iCEPHw09gPHepfvsnT9GL+Zxqm6 mkquCCaoZp5h/qUPi1w9/8cuKsf9UUo4bxWTh2X5oE5gLGWEh01nt2KYB8azaF0HqKkbpECL8oa fWyDGSL9c6QroTpUByOuqUaG3j6LqSZTq4M7wRXCSEelwq+JiBfiPjqnbigAzxPKaGeYL/AT14R u1LAUht+7EuEO4GzJgLGGVUrist/ywSshJkTOO2YmpVjk0ZbXBnYaR3CSIu7V0GAnfwu7S0ML9o BD0AyXVXrWctQ== X-Received: by 2002:a05:7300:fb81:b0:2b8:2910:dc9b with SMTP id 5a478bee46e88-2bd7b9f2a6dmr1800752eec.3.1771720643913; Sat, 21 Feb 2026 16:37:23 -0800 (PST) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:73d:b075:516c:4a69]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2bd7dc167d3sm2383191eec.24.2026.02.21.16.37.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Feb 2026 16:37:23 -0800 (PST) From: Dmitry Torokhov To: Fabio Baltieri , Benson Leung Cc: Guenter Roeck , Simon Glass , Tzung-Bi Shih , linux-input@vger.kernel.org, chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 1/7] Input: export input_default_setkeycode Date: Sat, 21 Feb 2026 16:37:09 -0800 Message-ID: <20260222003717.471977-1-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.53.0.345.g96ddfc5eaa-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Fabio Baltieri Export input_default_setkeycode so that a driver can set a custom setkeycode handler to take some driver specific action but still call the default handler at some point. Signed-off-by: Fabio Baltieri Link: https://patch.msgid.link/20260211173421.1206478-2-fabiobaltieri@chromium.org Signed-off-by: Dmitry Torokhov --- drivers/input/input.c | 23 ++++++++++++++++++++--- include/linux/input.h | 4 ++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/drivers/input/input.c b/drivers/input/input.c index ceb134044175..9336980ee320 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -861,14 +861,30 @@ static int input_default_getkeycode(struct input_dev *dev, return 0; } -static int input_default_setkeycode(struct input_dev *dev, - const struct input_keymap_entry *ke, - unsigned int *old_keycode) +/** + * input_default_setkeycode - default setkeycode method + * @dev: input device which keymap is being updated. + * @ke: new keymap entry. + * @old_keycode: pointer to the location where old keycode should be stored. + * + * This function is the default implementation of &input_dev.setkeycode() + * method. It is typically used when a driver does not provide its own + * implementation, but it is also exported so drivers can extend it. + * + * The function must be called with &input_dev.event_lock held. + * + * Return: 0 on success, or a negative error code on failure. + */ +int input_default_setkeycode(struct input_dev *dev, + const struct input_keymap_entry *ke, + unsigned int *old_keycode) { unsigned int index; int error; int i; + lockdep_assert_held(&dev->event_lock); + if (!dev->keycodesize) return -EINVAL; @@ -922,6 +938,7 @@ static int input_default_setkeycode(struct input_dev *dev, __set_bit(ke->keycode, dev->keybit); return 0; } +EXPORT_SYMBOL(input_default_setkeycode); /** * input_get_keycode - retrieve keycode currently mapped to a given scancode diff --git a/include/linux/input.h b/include/linux/input.h index 7d7cb0593a63..06ca62328db1 100644 --- a/include/linux/input.h +++ b/include/linux/input.h @@ -517,6 +517,10 @@ INPUT_GENERATE_ABS_ACCESSORS(res, resolution) int input_scancode_to_scalar(const struct input_keymap_entry *ke, unsigned int *scancode); +int input_default_setkeycode(struct input_dev *dev, + const struct input_keymap_entry *ke, + unsigned int *old_keycode); + int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke); int input_set_keycode(struct input_dev *dev, const struct input_keymap_entry *ke); -- 2.53.0.345.g96ddfc5eaa-goog