From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=74.125.82.181 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792522489; b=3LWP5ITx1o2Uhg8EDXdrBA+PpiQ3rG8gqUqmP1fv6XBDl4ECl2Jnqgxgw4wWftHZ/sDg ceo3nuLnnJ7bntHSp/gAyv2SIxqNbQQEnqukyUvNuLokFIoFl5GFYtc4cfP5EwDjqMLTd zxMmFN7N+tM0u8GlRl125KyhRYow1spCKwDMF6DtTk2jlMozclX2NQD7tdZcqBCzGwuun JsPTOaQ11WlMU7Y2iGoqt/UirXvFM5oUysAVH+ELqTw0lDH076wJX6a2ABWAXme3LfNjO 5CHrQXeGqxCIoOQGI3YRuuMJlONOzjTu6DtoHs+fTRrc3VwhHCSvH5nVrJrI2hOebSA== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792522489; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:Content-Transfer-Encoding: In-Reply-To; bh=a+YGUJeEL21flQxeJgEyROLOEEmxFMPwen0F3bt91wI=; b=WQaPyUbNVDrtJaGX6xxq8BkvO3uwjOE8xA266fDQtXYjAOpbAINj52+O8mBmw2A2S5b3 vEssb9phoaOtAYWgMSO5M7ar/yFlSq/3Kvpkb1o2W4h8ZRvnftcr//Aeze4D5Gp2gJ3fH mEcKzm3dQ3oNhWFFxiZLAn0VqUyUmnanuUSeSKbTWwW6bZ4HRE2o71Ml0HmwLpNUHcFT5 yLQSQDhNQqJspfyONivs6rtgrNZcJdvzgaiHuxSTVJ7JQZnWAkQrdDl7mXaLaswxk7XFe 5DuWLpI2VrZcG4e08NUVwPhvykesr3XHAQuJcJJhBTDDkg6X2EqGSDCvWMQPHGV+JFA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=cNpSjyVD; arc=none smtp.remote-ip=74.125.82.181 Received: from mail-dy1-f181.google.com (mail-dy1-f181.google.com [74.125.82.181]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42BAF606A31F for ; Tue, 20 Oct 2026 18:54:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 42BAF606A31F 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, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=cNpSjyVD Received: by mail-dy1-f181.google.com with SMTP id 5a478bee46e88-35b2c599f43so1399763eec.0 for ; Tue, 20 Oct 2026 11:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792522488; x=1793127288; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to:content-type; bh=a+YGUJeEL21flQxeJgEyROLOEEmxFMPwen0F3bt91wI=; b=cNpSjyVDxeZMqcqxOqB9EKCdiKtPdvBLoG6NwPB2ME90BEBUSoASCok3BTJCWRzmch pNWcgsLpP4PYDmJr8a0L4mKvc7JsdLL2H7n7kPI2wZkDtIaq0W1rRg/MY6hUM/gy5Uoy W+m7CWwruUbFTIYyqnOJmBOL0w946NXdRSpxe6jaOK0BT0sCvBvGsnj6H5fBmWcWNvLZ msrgSrE2dYQ/4jED9CbuOpHR4ZW8ZY384J9TEKtFsWkaRluoI3p5WBWwaKkqlP4+GRbQ U4HwE9gc512DhP6yTqnRZIiJQwgX36aA+yBDDi2k7JIy8yC1YZIs0MXwbGp1hJ1veg6G SECw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792522488; x=1793127288; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=a+YGUJeEL21flQxeJgEyROLOEEmxFMPwen0F3bt91wI=; b=taalZlaCSmmBRvL2GAcJ0ZcZRsQOsaKaOCwYnc/fIsWKA6PTxwtWRQi1kRHACQtIQd +1fMZMhFjTIkV+4Sow9HipHnpVCTI0zsQRwqOzFKpw78mvVTcyjCW3VVc50fme2JLXrL 3gGXnMqzCEpq0mmMVkHH0fBmbQLtSLXYRlLftWV5NaQe8pq3e3TbMgLn+9hE+welwU+F NHhpNwA7OoE2quXYvHYotQO0v23OAbgDGM5AXnhJNy1hhC47xG3PGdAfBxP/ny5Scbke xYm9+U2fXvt/a47AV47LWJZE/goGQ0au9p7vnFJkmMvCHDuHLfowcUe9J9X4n5ZSFHDa xNAA== X-Forwarded-Encrypted: i=1; AKwUvBwT7nXDi1qHmZOpHMjELOgHFl6Xl8AIMt/UqsS5fhSIyFVM4Xv//TrQDL85fFUVetlHOwo+gOtYgw==@vger.kernel.org X-Gm-Message-State: AFq9FYJX1GVY367C4ciyDE69kTlfDnaB1oBqbRrau85Mvrt0ePJXZkGC Qko8S8x/tLjKRS53zvPdcCQEL+/FKJGUELP9rKKC24DXTvVAkyf/bxNjgGafqg== X-Gm-Gg: AYBFou167ntAQX30wRjDn7EtP51+GZYHOypQ1w0K6jGiKdCu8JvNuhCOxvRwOQ5psAl 2S2sILEqaJDouLnToCVSx2w3BCpCsuWznMXp/3uxnKfl58QCFFo0KT3gzdjlB7oZ2wSwoPBN59E OdyPawRBwyuhBoQrAfbE+8x1ATtwVBp1pjj2QlNgnTlZLXothTWOSd6f57Odt/RXy+xyV6U0OM+ g/H205fgGhGGxgeJTNIjy8b/43P2/cdUyP7IxsVCJkctmEXi0ZxmLyMqj+ubfUl8ObCY17E9+Gn K/2l2AUIOFbe9fi2bGA5GrAFBcs0lwoIWQy07t6AEDkoPRZO+mJx84Kx+R0PScIjjr/W7b6HeiW hJWBU7QHp1Xhrv52W9KTB/lwoS8nqb8Y3jdZ0kvDS69dF4+j7AxF6szcoOoN3yDyuL//FkgGzXm rWxrpyxgyesa++H3SfnbOlnzrOSzr7m9TLoa/54rV+BU8NopqHUTjS+4Lv4FDyxKUaIKEPbdSnL mOSPQ9YgSr8P5a5OHR9uhA3o3zqZ37WAbMcWfLw X-Received: by 2002:a05:693c:6382:10b0:35c:de00:93d3 with SMTP id 5a478bee46e88-3674f6143a2mr134088eec.40.1792522488031; Tue, 20 Oct 2026 11:54:48 -0700 (PDT) Received: from google.com ([2a00:79e0:2ebe:8:92d1:8038:c4e7:1f0c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-367405ed2absm606896eec.5.2026.10.20.11.54.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2026 11:54:47 -0700 (PDT) Date: Tue, 20 Oct 2026 11:54:43 -0700 From: Dmitry Torokhov To: Svyatoslav Ryhel Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lee Jones , Pavel Machek , Sebastian Reichel , Ion Agorria , =?utf-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= , Florian Krischer , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, mfd@lists.linux.dev, linux-leds@vger.kernel.org, linux-pm@vger.kernel.org Subject: Re: [PATCH v12 4/7] input: keyboard: Add driver for ASUS Transformer dock multimedia keys Message-ID: References: <20261019100406.103687-1-clamor95@gmail.com> <20261019100406.103687-5-clamor95@gmail.com> X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20261019100406.103687-5-clamor95@gmail.com> On Mon, Oct 19, 2026 at 01:04:03PM +0300, Svyatoslav Ryhel wrote: > From: Michał Mirosław > > Add support for multimedia top button row of ASUS Transformer's Mobile > Dock keyboard. Driver is made that function keys (F1-F12) are used by > default which suits average Linux use better and with pressing > ScreenLock + AltGr function keys layout is switched to multimedia keys. > Only Dock keyboard input events are tracked for AltGr pressing. > > Co-developed-by: Ion Agorria > Signed-off-by: Ion Agorria > Signed-off-by: Michał Mirosław > Signed-off-by: Svyatoslav Ryhel Acked-by: Dmitry Torokhov > + > +static void asus_ec_keys_setup_keymap(struct asus_ec_keys_data *priv) > +{ > + struct input_dev *dev = priv->xidev; > + unsigned int i; > + > + BUILD_BUG_ON(ARRAY_SIZE(priv->keymap) < ARRAY_SIZE(asus_ec_dock_ext_keys)); > + > + dev->keycode = priv->keymap; > + dev->keycodesize = sizeof(*priv->keymap); > + dev->keycodemax = ARRAY_SIZE(priv->keymap); > + > + input_set_capability(dev, EV_MSC, MSC_SCAN); > + input_set_capability(dev, EV_KEY, KEY_UNKNOWN); > + > + for (i = 0; i < ARRAY_SIZE(asus_ec_dock_ext_keys); i++) { > + unsigned int code = asus_ec_dock_ext_keys[i]; > + > + if (!code) > + continue; Nit: this check is not needed, input core will remove KEY_RESERVED (0) from the keybit when device is registered. > + > + __set_bit(code, dev->keybit); > + priv->keymap[i] = code; > + } > +} > + > +static int asus_ec_keys_probe(struct platform_device *pdev) > +{ > + struct i2c_client *parent = to_i2c_client(pdev->dev.parent); > + struct asusec_core *ec = dev_get_drvdata(pdev->dev.parent); > + struct device *dev = &pdev->dev; > + struct asus_ec_keys_data *priv; > + int error; > + > + priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); > + if (!priv) > + return -ENOMEM; > + > + platform_set_drvdata(pdev, priv); > + priv->ec = ec; > + > + priv->xidev = devm_input_allocate_device(dev); > + if (!priv->xidev) > + return -ENOMEM; > + > + priv->xidev->name = devm_kasprintf(dev, GFP_KERNEL, "%s Keyboard Ext", > + ec->model); > + priv->xidev->phys = devm_kasprintf(dev, GFP_KERNEL, "i2c-%u-%04x", > + i2c_adapter_id(parent->adapter), > + parent->addr); > + > + if (!priv->xidev->name || !priv->xidev->phys) > + return -ENOMEM; > + > + asus_ec_keys_setup_keymap(priv); > + > + error = input_register_device(priv->xidev); > + if (error) > + return dev_err_probe(dev, error, > + "failed to register extension keys\n"); > + > + priv->nb.notifier_call = asus_ec_keys_notify; > + > + error = blocking_notifier_chain_register(&ec->notify_list, &priv->nb); > + if (error) > + return error; > + > + ec->ext_keys_enabled = true; I think this block (after input_register_device()) can go into open() method for the input device. > + > + return 0; > +} > + > +static void asus_ec_keys_remove(struct platform_device *pdev) > +{ > + struct asus_ec_keys_data *priv = platform_get_drvdata(pdev); > + struct asusec_core *ec = priv->ec; > + > + ec->ext_keys_enabled = false; > + blocking_notifier_chain_unregister(&ec->notify_list, &priv->nb); And this into close(). Thanks. -- Dmitry