From patchwork Sun Jan 22 15:21:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dzmitry Sankouski X-Patchwork-Id: 1730146 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=mtnC7aLq; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4P0H5g6zBqz23gY for ; Mon, 23 Jan 2023 02:21:59 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 3554A85657; Sun, 22 Jan 2023 16:21:47 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="mtnC7aLq"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 3B8DF856A2; Sun, 22 Jan 2023 16:21:39 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B31A085657 for ; Sun, 22 Jan 2023 16:21:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=dsankouski@gmail.com Received: by mail-ed1-x536.google.com with SMTP id s3so11889582edd.4 for ; Sun, 22 Jan 2023 07:21:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=55E7mQnptVShjsiYwSaznX2COXJf6RzUpR+ZQHKbKqM=; b=mtnC7aLq+nAWWdowBfGsUyzgNK3vkErYAvxx8XERURjxGYjB9/CRGqNZfEawKcJ+CP 3fC8GsNpNcHbuEQk7E8sOoo3fyKhTmAu8Hza1a8nIlI0jtHMet6XDMSqtFrZgHBwL1oL Xnbqz03/I9+uj6AKTDJoAy+mqnln3vd+qkXpyMgiMFXxNXpbdovvt0bDD4sH1bJNBpgS 8g/Ul3kiHE8C3S5dKeQxvCWNYV1W8gxxEEGCLXBdOpOWK0QoIogILpB1yvHvmCTqYS6Y r4XBDoPM0Oh1UwsjPNTzWAiooWbX2Woxx6u0jyjrT/eqYjA+21LKjZMf3Bkse4g5IX8M bYsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=55E7mQnptVShjsiYwSaznX2COXJf6RzUpR+ZQHKbKqM=; b=7DwQvJNkzoTINL6sMsJeQoN2bAvg7GOCPBMIRBTHvrLTuWhG1uTKOs4j1ZXps2Ljis Y2dTiTnMpeSrLpGGVTDPeSoB0PZlUyouj2jFldPVjcUBSArSVk+/CgP7yoxaUOmn9nn1 LpJyhUOljCeujwyOcuWGaGAfx6FsEEQlUUStUPprG82ckav+WVMQSwX7rk+2LSgTl42i mFbPDxYyKwlOMa2+7aUoIvPAKGvN85EvGbpV1+u/BMrMBXZjqkl2CER5KtZh1H41ifdC bSxKS4TfxXdVQAEPC2NKc4BCCvQ4xuzW0JG2ccy2Qi/b9MaHTGnszLXc09B0BL5egvOA Yksw== X-Gm-Message-State: AFqh2krEciv/yZUpj7+2k8p8sb7UvrhB3vhSCw1p2qJTpnEVLVmawHKd pG6ubA8zn+kai9XttfY/1IF12kkpYZs= X-Google-Smtp-Source: AMrXdXvNrr7qUT+MNB4Hanofs6LyVwNX8Aed62HpvW2L4KuaTk+B09AWXXuUXb0IpssupIkRSBaFkQ== X-Received: by 2002:a05:6402:5507:b0:49d:efdc:4f77 with SMTP id fi7-20020a056402550700b0049defdc4f77mr29979452edb.38.1674400896123; Sun, 22 Jan 2023 07:21:36 -0800 (PST) Received: from localhost.localdomain ([46.216.42.4]) by smtp.googlemail.com with ESMTPSA id a8-20020aa7d908000000b0049dfd6bdc25sm11190075edr.84.2023.01.22.07.21.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Jan 2023 07:21:35 -0800 (PST) From: Dzmitry Sankouski To: u-boot@lists.denx.de Cc: Dzmitry Sankouski , Sumit Garg Subject: [PATCH v3 1/5] gpio: qcom: add direction functions for pwrkey Date: Sun, 22 Jan 2023 18:21:21 +0300 Message-Id: <20230122152125.858085-2-dsankouski@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230122152125.858085-1-dsankouski@gmail.com> References: <20230122152125.858085-1-dsankouski@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean GPIO button driver requires direction functions to probe button gpio. Those functions are blank, since pwrkey is not really gpio, and don't support direction settings. Signed-off-by: Dzmitry Sankouski Reviewed-by: Sumit Garg --- Changes for v2: - none Changes for v3: - KDPWR and RESIN not gpio: fix comment and commit message drivers/gpio/qcom_pmic_gpio.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/gpio/qcom_pmic_gpio.c b/drivers/gpio/qcom_pmic_gpio.c index 3be1be8692..65feb453eb 100644 --- a/drivers/gpio/qcom_pmic_gpio.c +++ b/drivers/gpio/qcom_pmic_gpio.c @@ -303,9 +303,25 @@ static int qcom_pwrkey_get_value(struct udevice *dev, unsigned offset) } } +/* + * Since pmic buttons modelled as GPIO, we need empty direction functions + * to trick u-boot button driver + */ +static int qcom_pwrkey_direction_input(struct udevice *dev, unsigned int offset) +{ + return 0; +} + +static int qcom_pwrkey_direction_output(struct udevice *dev, unsigned int offset, int value) +{ + return -EOPNOTSUPP; +} + static const struct dm_gpio_ops qcom_pwrkey_ops = { .get_value = qcom_pwrkey_get_value, .get_function = qcom_pwrkey_get_function, + .direction_input = qcom_pwrkey_direction_input, + .direction_output = qcom_pwrkey_direction_output, }; static int qcom_pwrkey_probe(struct udevice *dev) From patchwork Sun Jan 22 15:21:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dzmitry Sankouski X-Patchwork-Id: 1730147 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=lfmdK3WE; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4P0H5x1MsPz23gY for ; Mon, 23 Jan 2023 02:22:13 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 148DF856A4; Sun, 22 Jan 2023 16:21:50 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="lfmdK3WE"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 58B50850CC; Sun, 22 Jan 2023 16:21:43 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 25801856A0 for ; Sun, 22 Jan 2023 16:21:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=dsankouski@gmail.com Received: by mail-ed1-x530.google.com with SMTP id x36so11828894ede.13 for ; Sun, 22 Jan 2023 07:21:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=bRj0R8OIoh25NP5SAxD0sFML9T/WrBTYMtNxKGtHnXU=; b=lfmdK3WEdNOOoQdJZWl026Hv004QnmJZzzITvWIRq5C805aUlCFCGEqa8tvj7ML53i GZURw0XDkSZq24wgm13DEds5FDgwVw3kGbBUXaAo0tLgor/vZ4gBLt10hIYUFxKzEDvD dGPQxkBFjj0YvXB18r1DEQ59IJnSsvEz7IulPN9U+Xr25DiciQJPWspN8Los6H+i35z9 y39xSsC5m3zSFAr0bumgUx3c1Eq9pjNGZzLqSCFYFlKTcSe/iMLXAjLdJDdLil+/iPcT fgnCcMPFF38c/MKY0G4RHXsEZVgkbpsCvkjztcw3nHqpbbGCr9XvVTjDSZZguyQAT//e C9Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bRj0R8OIoh25NP5SAxD0sFML9T/WrBTYMtNxKGtHnXU=; b=vkWLbzBj2/uucCbXu7pu1GbaonDvzoIaOFap+kFAmRR3TUM10G8Otq7ZvqRni4yd10 6OZVBdWUA1//hXV048MX3e7DEjjK4K6z1x0icYVcaAkenzq8r+rcb44ksEDixWp1dD3F 2mZT5YbqCyGFnxXccW4xNab6lp6SqIG2LiwE12W94WCXu8CoQQCNceyT1scr3gDVRvNs tJFhgKEgt4NoZM+sa6X6QkvqmJ4d31VcwmTKHQNnMQcoE0zT4F9+rTTGXYQjrblx8TVE Jyp0aBslh84a67HKHuLZvEx5CuPMDUP1E97zDNmS3QrQCMTX1LqIFMqZjZB2qxTwco2E EGpQ== X-Gm-Message-State: AFqh2kpotX6DDEOepV8xt4MU0woHpYAQNBeIGFSm/4IhJpewa2xixPR4 I+oVENItZz2HIOMZ2cOIIkisHwnJP48= X-Google-Smtp-Source: AMrXdXtEggUc2OaYtzRa+t2ga9KL7yQFfseAMI3R6mzw0Q6xO4LBKptH53hKODidQbZldotlbvUvfw== X-Received: by 2002:a05:6402:3214:b0:496:37c9:b8e6 with SMTP id g20-20020a056402321400b0049637c9b8e6mr25412319eda.8.1674400897427; Sun, 22 Jan 2023 07:21:37 -0800 (PST) Received: from localhost.localdomain ([46.216.42.4]) by smtp.googlemail.com with ESMTPSA id a8-20020aa7d908000000b0049dfd6bdc25sm11190075edr.84.2023.01.22.07.21.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Jan 2023 07:21:37 -0800 (PST) From: Dzmitry Sankouski To: u-boot@lists.denx.de Cc: Dzmitry Sankouski , Martyn Welch , Parthiban Nallathambi , Stefano Babic , Fabio Estevam , "NXP i.MX U-Boot Team" , Simon Glass , Philipp Tomsich , Kever Yang , Lin Huang , Adam Ford , Rasmus Villemoes , Michal Suchanek , Robert Marko , Philippe Reynes Subject: [PATCH v3 2/5] dts: add missing linux,code in gpio-keys Date: Sun, 22 Jan 2023 18:21:22 +0300 Message-Id: <20230122152125.858085-3-dsankouski@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230122152125.858085-1-dsankouski@gmail.com> References: <20230122152125.858085-1-dsankouski@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean gpio-keys linux driver enforces user to specify linux,code. Add missing linux,code before implementing button input support. - arch/arm/dts/rk3288-popmetal.dtsi -> KEY_POWER - arch/arm/dts/rk3288-tinker.dtsi -> KEY_POWER - arch/arm/dts/am3517-evm-ui.dtsi -> KEY_RECORD - sandbox/dts/sandbox.dtsi -> BTN_1 - sandbox/dts/sandbox.dts -> BTN_1 Signed-off-by: Dzmitry Sankouski Reviewed-by: Simon Glass --- Changes for v2: - N/A Changes for v3: - import input.h in dts to provide event constants arch/arm/dts/am3517-evm-ui.dtsi | 2 +- arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi | 2 +- arch/arm/dts/rk3288-popmetal.dtsi | 2 ++ arch/arm/dts/rk3288-tinker.dtsi | 2 ++ arch/sandbox/dts/sandbox.dtsi | 4 ++++ 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/arm/dts/am3517-evm-ui.dtsi b/arch/arm/dts/am3517-evm-ui.dtsi index 7d8f32bf70..340e68178c 100644 --- a/arch/arm/dts/am3517-evm-ui.dtsi +++ b/arch/arm/dts/am3517-evm-ui.dtsi @@ -72,7 +72,7 @@ record { label = "Record"; - /* linux,code = ; */ + linux,code = ; gpios = <&tca6416_2 15 GPIO_ACTIVE_LOW>; }; diff --git a/arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi b/arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi index 2f3fd32a11..5f760ed698 100644 --- a/arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi +++ b/arch/arm/dts/imx6ul-phytec-segin-peb-eval-01.dtsi @@ -8,7 +8,7 @@ / { gpio_keys: gpio-keys { - compatible = "gpio-key"; + compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_keys>; status = "disabled"; diff --git a/arch/arm/dts/rk3288-popmetal.dtsi b/arch/arm/dts/rk3288-popmetal.dtsi index 63785eb55e..0253933a11 100644 --- a/arch/arm/dts/rk3288-popmetal.dtsi +++ b/arch/arm/dts/rk3288-popmetal.dtsi @@ -38,6 +38,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include #include "rk3288.dtsi" / { @@ -63,6 +64,7 @@ power { gpios = <&gpio0 5 GPIO_ACTIVE_LOW>; label = "GPIO Key Power"; + linux,code = ; linux,input-type = <1>; wakeup-source; debounce-interval = <100>; diff --git a/arch/arm/dts/rk3288-tinker.dtsi b/arch/arm/dts/rk3288-tinker.dtsi index 2f816af47f..46460ae455 100644 --- a/arch/arm/dts/rk3288-tinker.dtsi +++ b/arch/arm/dts/rk3288-tinker.dtsi @@ -38,6 +38,7 @@ * OTHER DEALINGS IN THE SOFTWARE. */ +#include #include "rk3288.dtsi" / { @@ -63,6 +64,7 @@ button@0 { gpios = <&gpio0 5 GPIO_ACTIVE_LOW>; label = "GPIO Key Power"; + linux,code = ; linux,input-type = <1>; gpio-key,wakeup = <1>; debounce-interval = <100>; diff --git a/arch/sandbox/dts/sandbox.dtsi b/arch/sandbox/dts/sandbox.dtsi index afe598a4f5..c2c71505ce 100644 --- a/arch/sandbox/dts/sandbox.dtsi +++ b/arch/sandbox/dts/sandbox.dtsi @@ -4,6 +4,8 @@ * and sandbox64 builds. */ +#include + #define USB_CLASS_HUB 9 / { @@ -49,11 +51,13 @@ btn1 { gpios = <&gpio_a 3 0>; label = "button1"; + linux,code = ; }; btn2 { gpios = <&gpio_a 4 0>; label = "button2"; + linux,code = ; }; }; From patchwork Sun Jan 22 15:21:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dzmitry Sankouski X-Patchwork-Id: 1730149 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=eGIApAWm; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4P0H6L6vN2z23gY for ; Mon, 23 Jan 2023 02:22:34 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8CC08856BA; Sun, 22 Jan 2023 16:21:57 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eGIApAWm"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 5299F8569C; Sun, 22 Jan 2023 16:21:43 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E51C1850CC for ; Sun, 22 Jan 2023 16:21:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=dsankouski@gmail.com Received: by mail-ed1-x536.google.com with SMTP id s3so11889624edd.4 for ; Sun, 22 Jan 2023 07:21:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=0dqRL5ATWwSZo/TGNhoxG1iSmPjsoh/f//Y5DBgwB+g=; b=eGIApAWmZvaOlcHjVdjSflFuTcHh7MvQc7b3JU7DDdNY9yuWz20mwu4Xmd75SM7aAz X3H0ACcD75RmL8tpYeizz6q3t51RZBvyzlg3VWFTcv5JUwhmTKSKihiO1F9mxVmz8who f+XW6cz/cs73K9S8SiTMA3CzULysxcD5GKy5f6xcb9MXu8yT3N6Q7OdvHCDXksIJMxEl 8WcS3kPLbmWu2ZLPcTJWfWMVomq5rvEBJqW8KJrMPK3c6FgJJNOMOCR6YFsm+905dIty K6JOzZU92F1PvmFrSy98IKIZlQLsV9cdTxRkAMX6YUkl7HkakGV/e5CG/6WrrMxEreDc KuWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0dqRL5ATWwSZo/TGNhoxG1iSmPjsoh/f//Y5DBgwB+g=; b=xjvqgGr2vtk5rnCLQYLHnfSfrRmOeIaija834inta5U5YgiNxcpTJVTKMyp1jkAKvQ m61DWtqnvda1KtCeWmnrE6o4dEFA0Z3I4O+Qu/UL0LPig3OWejbOok0gT2Vtm+jkzmKp 8iLEM8IHRHb4eJH1CK1uXGE+Zug6oWDIwSX1ETsZdtfbaSB7m0xVLUgmq99LWqim17ek ZXtf8rWCiGBgQ2q5V3pVXRb8uU9wIWPgu/PZD1exsn2OocrfgRXuj/V6VTDYsGwiUsic BTEJnFFQ1sws1OvdlTTUPWWm63donUazkYx2BD7r+fDN3yI/CJGdbDSsOd6nB4SBxx4c k+Sw== X-Gm-Message-State: AFqh2koBiG3e8tcEbQktZnX2aLVP6z1/lto1beX98gNBTjAyKRl37DYP fWFGyCPmb0qktk8c/HRLbb/KI41LBxQ= X-Google-Smtp-Source: AMrXdXsC6GWKV2as8gG7n3OK5HDStSEZtFLKpQvSV87y90ww+eQKrA5Z44LGarygcxT9TxLgzOrLKA== X-Received: by 2002:a05:6402:3496:b0:48e:9c36:6c39 with SMTP id v22-20020a056402349600b0048e9c366c39mr30612714edc.0.1674400898479; Sun, 22 Jan 2023 07:21:38 -0800 (PST) Received: from localhost.localdomain ([46.216.42.4]) by smtp.googlemail.com with ESMTPSA id a8-20020aa7d908000000b0049dfd6bdc25sm11190075edr.84.2023.01.22.07.21.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Jan 2023 07:21:38 -0800 (PST) From: Dzmitry Sankouski To: u-boot@lists.denx.de Cc: Dzmitry Sankouski , Simon Glass , Sean Anderson , Ramon Fried , Andrew Scull , =?utf-8?q?Marek_Beh=C3=BAn?= , Etienne Carriere Subject: [PATCH v3 3/5] test: create dedicated fdt node for ofnode_for_each_prop test Date: Sun, 22 Jan 2023 18:21:23 +0300 Message-Id: <20230122152125.858085-4-dsankouski@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230122152125.858085-1-dsankouski@gmail.com> References: <20230122152125.858085-1-dsankouski@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Property count may change in /buttons node, if more button tests added, and this will break ofnode_for_each_prop. Add separate node for mentioned test. Signed-off-by: Dzmitry Sankouski Reviewed-by: Simon Glass --- Changes for v2: N/A Changes for v3: N/A arch/sandbox/dts/test.dts | 14 ++++++++++++++ test/dm/ofnode.c | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 2e580f980f..06ad027638 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -1517,6 +1517,20 @@ }; }; + ofnode-foreach { + compatible = "foreach"; + + first { + prop1 = <1>; + prop2 = <2>; + }; + + second { + prop1 = <1>; + prop2 = <2>; + }; + }; + osd { compatible = "sandbox,sandbox_osd"; }; diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c index 8077affabb..473a8cef57 100644 --- a/test/dm/ofnode.c +++ b/test/dm/ofnode.c @@ -1046,7 +1046,7 @@ static int dm_test_ofnode_for_each_prop(struct unit_test_state *uts) struct ofprop prop; int count; - node = ofnode_path("/buttons"); + node = ofnode_path("/ofnode-foreach"); count = 0; /* we expect "compatible" for each node */ From patchwork Sun Jan 22 15:21:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dzmitry Sankouski X-Patchwork-Id: 1730148 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=T6KGWFM7; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4P0H670rbTz23gY for ; Mon, 23 Jan 2023 02:22:23 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 46794856B8; Sun, 22 Jan 2023 16:21:53 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="T6KGWFM7"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 31692850CC; Sun, 22 Jan 2023 16:21:44 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 2791C856AE for ; Sun, 22 Jan 2023 16:21:40 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=dsankouski@gmail.com Received: by mail-ed1-x532.google.com with SMTP id w14so11890206edi.5 for ; Sun, 22 Jan 2023 07:21:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=oSAYgLIsRdEI3cuU3xRCcIUy7qW17BFN+x/FB0x0JxA=; b=T6KGWFM75/kPWpCVo8+xWLtDGXK9EOMH2glLFCof9D2UAiO1UXj1SUaK14LhyLNaI/ RXL89OFlyUP1CmGBEy3Mgwa+TVBC0aGJlaqrErr+2o3KbC4GXOEQg2Wr55U7gKOhTp13 1pl5hXMpy8sZmcXCHOx7cLVaAaISErGlNPQ2okL2vOZG4JCyZ22YPGTbfNUOvxcG9VPT nyjRiEzeekfLr+dCHnLx+u/l1b5izUVbcqq2dCJYyEEI0vM4lOcwMwoI9g6n6Pk+ua0C BOhuvE/BraZa6PmA8hmywW8+HavUM6R3e7bnm0dF0N1z/EG2jg2TJikv7/1lOLdav56b GIjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oSAYgLIsRdEI3cuU3xRCcIUy7qW17BFN+x/FB0x0JxA=; b=j+JJgd6oRGD/VysoCzfy2Qw70A6s5NT1010ywZsb1k+VCQ9/vRrWNZdhPW35Nxls10 xCApIRzAbwW0wQ9jqWhpeHfxVlEc6reH0+wmBYi95O6Z95XirBgRJs7qyEO1a0281y+N +6FWgieuW5ZnGWXoeELMM3qoOBPfYh2I21Qvv7RtzhmAm3mQflxjgZMPo3X4va6VDHWz R+crCqM2QOCGpJG5FVq3MZxp0oU+dkSwKfgzMvCUVOmYYSte5ddMiMPLAeNTNiq6iYUy ZhKIVTk7nzoiOaTTdwjiPOkaCAf2fPKru45JRev1qqF/1+ahuZxE5llGWbc1YhvesdhG rhlQ== X-Gm-Message-State: AFqh2kp9HACmJ3VWTGe8F666ZrI1oiST2NWcgPWq0g0g/bf+y0DIQbI7 fhT/z3dWWEZp8FNW6prgYXuGKksnkqY= X-Google-Smtp-Source: AMrXdXvH+6Dqvt+L0lBHTDcbzk0shu4GNoaVTBMMQy1RAFw023ediabasVTqCb7v+OrGlQu0+mHyrA== X-Received: by 2002:aa7:ccd9:0:b0:495:d1f4:7609 with SMTP id y25-20020aa7ccd9000000b00495d1f47609mr33260537edt.19.1674400899285; Sun, 22 Jan 2023 07:21:39 -0800 (PST) Received: from localhost.localdomain ([46.216.42.4]) by smtp.googlemail.com with ESMTPSA id a8-20020aa7d908000000b0049dfd6bdc25sm11190075edr.84.2023.01.22.07.21.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Jan 2023 07:21:38 -0800 (PST) From: Dzmitry Sankouski To: u-boot@lists.denx.de Cc: Dzmitry Sankouski , Heinrich Schuchardt Subject: [PATCH v3 4/5] dm: button: add support for linux_code in button-gpio.c driver Date: Sun, 22 Jan 2023 18:21:24 +0300 Message-Id: <20230122152125.858085-5-dsankouski@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230122152125.858085-1-dsankouski@gmail.com> References: <20230122152125.858085-1-dsankouski@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Linux event code must be used in input devices, using buttons. Signed-off-by: Dzmitry Sankouski Reviewed-by: Simon Glass --- Changes for v2: - fail, if linux,code not found Changes for v3: - add test for linux,code - change linux,code type to int - new line after return - add specific error code in function docs arch/sandbox/dts/test.dts | 2 ++ drivers/button/button-gpio.c | 17 ++++++++++++++++- drivers/button/button-uclass.c | 10 ++++++++++ include/button.h | 16 ++++++++++++++++ test/dm/button.c | 13 +++++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 06ad027638..f8d59f1ce1 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -172,11 +172,13 @@ btn1 { gpios = <&gpio_a 3 0>; label = "button1"; + linux,code = ; }; btn2 { gpios = <&gpio_a 4 0>; label = "button2"; + linux,code = ; }; }; diff --git a/drivers/button/button-gpio.c b/drivers/button/button-gpio.c index dbb000622c..7b5b3affe2 100644 --- a/drivers/button/button-gpio.c +++ b/drivers/button/button-gpio.c @@ -13,6 +13,7 @@ struct button_gpio_priv { struct gpio_desc gpio; + int linux_code; }; static enum button_state_t button_gpio_get_state(struct udevice *dev) @@ -29,6 +30,17 @@ static enum button_state_t button_gpio_get_state(struct udevice *dev) return ret ? BUTTON_ON : BUTTON_OFF; } +static int button_gpio_get_code(struct udevice *dev) +{ + struct button_gpio_priv *priv = dev_get_priv(dev); + int code = priv->linux_code; + + if (!code) + return -ENODATA; + + return code; +} + static int button_gpio_probe(struct udevice *dev) { struct button_uc_plat *uc_plat = dev_get_uclass_plat(dev); @@ -43,7 +55,9 @@ static int button_gpio_probe(struct udevice *dev) if (ret) return ret; - return 0; + ret = dev_read_u32(dev, "linux,code", &priv->linux_code); + + return ret; } static int button_gpio_remove(struct udevice *dev) @@ -92,6 +106,7 @@ static int button_gpio_bind(struct udevice *parent) static const struct button_ops button_gpio_ops = { .get_state = button_gpio_get_state, + .get_code = button_gpio_get_code, }; static const struct udevice_id button_gpio_ids[] = { diff --git a/drivers/button/button-uclass.c b/drivers/button/button-uclass.c index e33ed7d01d..032191d61a 100644 --- a/drivers/button/button-uclass.c +++ b/drivers/button/button-uclass.c @@ -38,6 +38,16 @@ enum button_state_t button_get_state(struct udevice *dev) return ops->get_state(dev); } +int button_get_code(struct udevice *dev) +{ + struct button_ops *ops = button_get_ops(dev); + + if (!ops->get_code) + return -ENOSYS; + + return ops->get_code(dev); +} + UCLASS_DRIVER(button) = { .id = UCLASS_BUTTON, .name = "button", diff --git a/include/button.h b/include/button.h index 96e6b1901f..207f4a0f4d 100644 --- a/include/button.h +++ b/include/button.h @@ -37,6 +37,14 @@ struct button_ops { * @return button state button_state_t, or -ve on error */ enum button_state_t (*get_state)(struct udevice *dev); + + /** + * get_code() - get linux event code of a button + * + * @dev: button device to change + * @return button code, or -ENODATA on error + */ + int (*get_code)(struct udevice *dev); }; #define button_get_ops(dev) ((struct button_ops *)(dev)->driver->ops) @@ -58,4 +66,12 @@ int button_get_by_label(const char *label, struct udevice **devp); */ enum button_state_t button_get_state(struct udevice *dev); +/** + * button_get_code() - get linux event code of a button + * + * @dev: button device to change + * @return button code, or -ve on error + */ +int button_get_code(struct udevice *dev); + #endif diff --git a/test/dm/button.c b/test/dm/button.c index e76c1ad030..3318668df2 100644 --- a/test/dm/button.c +++ b/test/dm/button.c @@ -13,6 +13,7 @@ #include #include #include +#include #include /* Base test of the button uclass */ @@ -85,6 +86,18 @@ static int dm_test_button_label(struct unit_test_state *uts) } DM_TEST(dm_test_button_label, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); +/* Test button has linux,code */ +static int dm_test_button_linux_code(struct unit_test_state *uts) +{ + struct udevice *dev; + + ut_assertok(uclass_get_device(UCLASS_BUTTON, 1, &dev)); + ut_asserteq(BTN_1, button_get_code(dev)); + + return 0; +} +DM_TEST(dm_test_button_linux_code, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); + /* Test adc-keys driver */ static int dm_test_button_keys_adc(struct unit_test_state *uts) { From patchwork Sun Jan 22 15:21:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dzmitry Sankouski X-Patchwork-Id: 1730150 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=VHgejbOz; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4P0H6Z08Pbz23gY for ; Mon, 23 Jan 2023 02:22:46 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id BBF88856C7; Sun, 22 Jan 2023 16:22:03 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="VHgejbOz"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E9FCE850CC; Sun, 22 Jan 2023 16:21:45 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6BC5F856B0 for ; Sun, 22 Jan 2023 16:21:41 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=dsankouski@gmail.com Received: by mail-ed1-x536.google.com with SMTP id v5so11895633edc.3 for ; Sun, 22 Jan 2023 07:21:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=PlimmWNA5wiBnf07IXWq46PlzfjNMMm+sFVtwdeHl+E=; b=VHgejbOzIfYe6ooP05kO7aokzBTvqcfC5h5/n866+O0AU0bFk5VcTPlVzsfG/tYH8k CiOfJ2G9AQ3bxT/BjS/0uMf7lSfWZ9zIOBXDBUzaQiAO3MxfgYhTT3P8I5HeBQJWN1b2 f4TIQKJLoJhjp1XuSGVZTMNvlfX9jl+GuHqlmc0qBeRMYBjPCKBBvdyeND0MhxmE9Mkr bWhd2uz3MzXqMJkTp8FuM49Yga+YwY+BPIU0LiVUUKsPPtqsv3TPcS3ssVHSg3n9gW+N IhRmgEdnQNxhwQsWbJk84RZnCqPBvMAcVlTmepA+DshmPNAhj18m9Ai+0Ix0xDW7/QGL nULw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PlimmWNA5wiBnf07IXWq46PlzfjNMMm+sFVtwdeHl+E=; b=2Bol6/xCFplbKAXqYgAS/TPL3u7RzwyDasBkcR8jDkOKdmxY38Fok7VP9Cf1GVAHVN Y2XHwHfuVk4UyfJGLWiwf6mSEyZD72AaaEcK472Ht+FkN5qRY/rhz9F8bfNCW8J1mFmT 6G9MBTPkTGkIjrPSjgJB4ZTSEP57pUAAgvxak8LluYt8XdnSjPbPFFc4gF37dppv9ESy qQDrbc7tSJfRW/HQc523s4LOsuRsr1u3dlnfDmtDm7bVs45e5VzOBF3ZPzmqyzsQWYbv hUwZiuJx6B34BKIZzutRmL1bBVh5Ffhcxe9GQo8PN8Mw3EDZkxEIrnCGiokBYWbcoefZ Wpxw== X-Gm-Message-State: AFqh2krT3lE+Y1aor3LkIum1ZvkHlXskDnGmIkx1nJdoDlWg3JTqys1Y X8gFt//nsLspmecIg7tbUT5cZsRi9hA= X-Google-Smtp-Source: AMrXdXsOv3BAKf9I3FXzaUbtGBPY7IoJQKKrsUBCcCLmSqkf2upAgpAeF9BJMZmXEbKaTksnn+1nxA== X-Received: by 2002:aa7:d701:0:b0:49a:d3c2:c76f with SMTP id t1-20020aa7d701000000b0049ad3c2c76fmr24069802edq.13.1674400900155; Sun, 22 Jan 2023 07:21:40 -0800 (PST) Received: from localhost.localdomain ([46.216.42.4]) by smtp.googlemail.com with ESMTPSA id a8-20020aa7d908000000b0049dfd6bdc25sm11190075edr.84.2023.01.22.07.21.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Jan 2023 07:21:39 -0800 (PST) From: Dzmitry Sankouski To: u-boot@lists.denx.de Cc: Dzmitry Sankouski , Simon Glass , Mark Kettenis Subject: [PATCH v3 5/5] dm: input: add button_kbd driver Date: Sun, 22 Jan 2023 18:21:25 +0300 Message-Id: <20230122152125.858085-6-dsankouski@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230122152125.858085-1-dsankouski@gmail.com> References: <20230122152125.858085-1-dsankouski@gmail.com> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Bootmenu requires an input device with arrows and enter key. A common smartphone luckily has power, volume up/down buttons, which may be used for controlling bootmenu. To use driver, add 'button-kbd' to stdin. Signed-off-by: Dzmitry Sankouski Reviewed-by: Simon Glass --- Changes for v2: - add doc on driver private data struct - use calloc instead of malloc Changes for v3: - none drivers/input/Kconfig | 9 +++ drivers/input/Makefile | 1 + drivers/input/button_kbd.c | 126 +++++++++++++++++++++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 drivers/input/button_kbd.c diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig index 1c534be005..b9a4e443a3 100644 --- a/drivers/input/Kconfig +++ b/drivers/input/Kconfig @@ -46,6 +46,15 @@ config APPLE_SPI_KEYB laptops based on Apple SoCs. These keyboards use an Apple-specific HID-over-SPI protocol. +config BUTTON_KEYBOARD + bool "Buttons as keyboard" + depends on BUTTON_GPIO + depends on DM_KEYBOARD + help + Enable support for mapping buttons to keycode events. Use linux,code button driver + dt node to define button-event mapping. + For example, an arrows and enter may be implemented to navigate boot menu. + config CROS_EC_KEYB bool "Enable Chrome OS EC keyboard support" depends on INPUT diff --git a/drivers/input/Makefile b/drivers/input/Makefile index ded76bddb2..14c0ea7325 100644 --- a/drivers/input/Makefile +++ b/drivers/input/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_$(SPL_TPL_)CROS_EC_KEYB) += cros_ec_keyb.o obj-$(CONFIG_$(SPL_TPL_)OF_CONTROL) += key_matrix.o obj-$(CONFIG_$(SPL_TPL_)DM_KEYBOARD) += input.o keyboard-uclass.o +obj-$(CONFIG_BUTTON_KEYBOARD) += button_kbd.o ifndef CONFIG_SPL_BUILD diff --git a/drivers/input/button_kbd.c b/drivers/input/button_kbd.c new file mode 100644 index 0000000000..99e65f12f0 --- /dev/null +++ b/drivers/input/button_kbd.c @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2023 Dzmitry Sankouski + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * struct button_kbd_priv - driver private data + * + * @input: input configuration + * @button_size: number of buttons found + * @old_state: a pointer to old button states array. Used to determine button state change. + */ +struct button_kbd_priv { + struct input_config *input; + u32 button_size; + u32 *old_state; +}; + +static int button_kbd_start(struct udevice *dev) +{ + struct button_kbd_priv *priv = dev_get_priv(dev); + int i = 0; + struct udevice *button_gpio_devp; + + uclass_foreach_dev_probe(UCLASS_BUTTON, button_gpio_devp) { + struct button_uc_plat *uc_plat = dev_get_uclass_plat(button_gpio_devp); + /* Ignore the top-level button node */ + if (!uc_plat->label) + continue; + debug("Found button %s #%d - %s, probing...\n", + uc_plat->label, i, button_gpio_devp->name); + i++; + } + + priv->button_size = i; + priv->old_state = calloc(i, sizeof(int)); + + return 0; +} + +int button_read_keys(struct input_config *input) +{ + struct button_kbd_priv *priv = dev_get_priv(input->dev); + struct udevice *button_gpio_devp; + struct uclass *uc; + int i = 0; + u32 code, state, state_changed = 0; + + uclass_id_foreach_dev(UCLASS_BUTTON, button_gpio_devp, uc) { + struct button_uc_plat *uc_plat = dev_get_uclass_plat(button_gpio_devp); + /* Ignore the top-level button node */ + if (!uc_plat->label) + continue; + code = button_get_code(button_gpio_devp); + if (!code) + continue; + + state = button_get_state(button_gpio_devp); + state_changed = state != priv->old_state[i]; + + if (state_changed) { + debug("%s: %d\n", uc_plat->label, code); + priv->old_state[i] = state; + input_add_keycode(input, code, state); + } + i++; + } + return 0; +} + +static const struct keyboard_ops button_kbd_ops = { + .start = button_kbd_start, +}; + +static int button_kbd_probe(struct udevice *dev) +{ + struct button_kbd_priv *priv = dev_get_priv(dev); + struct keyboard_priv *uc_priv = dev_get_uclass_priv(dev); + struct stdio_dev *sdev = &uc_priv->sdev; + struct input_config *input = &uc_priv->input; + int ret = 0; + + input_init(input, false); + input_add_tables(input, false); + + /* Register the device. */ + priv->input = input; + input->dev = dev; + input->read_keys = button_read_keys; + strcpy(sdev->name, "button-kbd"); + ret = input_stdio_register(sdev); + if (ret) { + debug("%s: input_stdio_register() failed\n", __func__); + return ret; + } + + return 0; +} + +static const struct udevice_id button_kbd_ids[] = { + { .compatible = "button-kbd" }, + { } +}; + +U_BOOT_DRIVER(button_kbd) = { + .name = "button_kbd", + .id = UCLASS_KEYBOARD, + .of_match = button_kbd_ids, + .ops = &button_kbd_ops, + .priv_auto = sizeof(struct button_kbd_priv), + .probe = button_kbd_probe, +};