From nobody Fri Apr 10 01:03:35 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 730AE3CA49D for ; Wed, 4 Mar 2026 17:41:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772646077; cv=none; b=FLep6CG8dcm+z/H+M7Of9eEJ/LwhE5SX3dUIzVdI4hm0l5TMPccmlkMoVaW8ksrfrZHZDXGfKdACbB8pf/i4uHhee5sXaYieUyaYmvGeCaDbIa4khqnYziPT/1LgzRW/gnIeRESdHNX+PqqUR9MCOLttIa0VefjuIb6s1R8mFgg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772646077; c=relaxed/simple; bh=RntdKYFLAqg2iNXVxuafdBAsXRNURhR71Krw3kGsMIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=KJg4KbY0m8Y0VIaRGltzzQEJf9pvoETu0Sx4gaTvFtEOWgPjRK30Bmw4rBhhNVMonGzzQDo9+bY7mafdurz936ZEQal43gBU5vzi0iuz1u7bi1gp4tPRM6UVawv4v0PbrraX6jltlmKKAPsFUTVTgu7/XfQkACH2HJAaoM+F/rs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=vw/46ORT; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="vw/46ORT" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-439afc58ac7so4141702f8f.0 for ; Wed, 04 Mar 2026 09:41:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772646074; x=1773250874; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=phFcdh2W64G8LFWfgDYerHMrQ1P5VQC8qaDtjGt/hBo=; b=vw/46ORTCxtzLRY5lHj1wL5ncdkrFEWFrj9ji/DsIgL+CvGhUOGEM+ObFKs7ErBa0O 7yYEdTCmADlOqGnFRZuizrXwqWxJWuyqqi6oPiVIprjQ6KJ9cXcMIliX7pLdQJKOAkT1 9QUYklnsxFmjO5vcVa++rgBZD44W3DnIcYTQNLoTpu2Ei5NzV9zjjfjYnnprD0ND9gPk 4UNbOxkmpoFZCFLq9t7FwOJtBJy95buLed5kWw8er/eWMgnCJzIBs6VIce4QENg76Lhz Oe4ugh0BuK5yDg1BIW5PgUGo1nBXypxhtGLyKqpWKyWIPfgT9PfTBswVc8uPcJE8xt2m CwyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772646074; x=1773250874; h=cc:to: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=phFcdh2W64G8LFWfgDYerHMrQ1P5VQC8qaDtjGt/hBo=; b=TkrVL1iE9wvNDPSp6cv4tbTpZ+isTb3Nab8NyM+4jq0Dq+StCNRn4Ly1YM3XrovVT9 az3HqV/RbdNW6F5wXBsZldL1lMomE8+EZYrhHG7I2O/GrzsFN4nM/pc+uM5XNqCq85E5 xhCWzlr8hHVU8FDYmVAxCBeJy2taDrzuwIGHmZ37S57yL3B2p4XQSU3NWTpz+JCFXkv+ VpSR1n0v7KQZgaMXxN4mpU9+r9lntJEeCVYaM5oQYtBjH4zeIUF/dj+rk2TioDDlM6li o4AvF9HCcQ8KpXOzYX0D6zfQkyfCiNAYOoN372S8bLFNKikU5AQHvSz4zHI+ZIkuev/p A3gg== X-Forwarded-Encrypted: i=1; AJvYcCWMEDsV8gO93ZRi/l9XuInW0wmzq3h6zk/w5bt8VdkeRcty5d+lOXFsoFwJfm50iYNdja8K06J2ap6ZLaw=@vger.kernel.org X-Gm-Message-State: AOJu0YxfMBm3Ihae5+eYoQWAGUT1VJbeh2feIp7YtvwgRbIErcmVkVwz PcmDNx4xx6jvNQbebr85BgN82koeTYyNBjN9+LihQrMozafzN20owefJPVVQo7eH5Zs= X-Gm-Gg: ATEYQzwHC+CfGkgNwDP4FDDvfSJcJCri6oM8lSppR/sI4nlhaeQQtJFEr0GSRRPKAew 5q5n7OrdZmUl1GFFTsKCXz8EhZJTZHUHP1OoLIGDLXxnWtFTXdvCatKdjkS3nm0Qdw7boH5dB2q 2o5jMnx42NLiWLx6h9XT8sCLYICEsICJgBeG63SZCiYXABvHHI7QbMJdIk9Y5pODfiYaJCTDIWq ke+Q/y75pOyCOgVXxuDeQm/89HSwYPpTenyO8IqEEVxzAMrGkvNO2K37bdCP16QVfpQz33NyHKi AJykwe+BOaO4BAi8RDke5H4dUd+RlfMjN5j7o0qxVRrbVhCbU7pN8RhBMrE89ZqexTN6x57l8+J u1bEdFRwmw8Gl+kLslxeVSGJ/Q2yd23rVcH17bRnPKoRxtSCVw/1CceCSobbqpXOkzRCk7bJGM1 T2jqLG64KlDEwiQiMObB+IPH04ouXou5JWOgcYUxcwvrlr X-Received: by 2002:a05:6000:2884:b0:439:b991:5c07 with SMTP id ffacd0b85a97d-439c80146f0mr5128989f8f.40.1772646073589; Wed, 04 Mar 2026 09:41:13 -0800 (PST) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:8261:5fff:fe11:bdda]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-439ab6ebe56sm33783749f8f.15.2026.03.04.09.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 09:41:13 -0800 (PST) From: Neil Armstrong Date: Wed, 04 Mar 2026 18:41:08 +0100 Subject: [PATCH] pinctrl: qcom: spmi-gpio: implement .get_direction() 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: quoted-printable Message-Id: <20260304-topic-sm8x50-spmi-gpio-get-direction-v1-1-a25612161fba@linaro.org> X-B4-Tracking: v=1; b=H4sIALNuqGkC/x3NQQqEMAxA0atI1hOItZ0Z5yriQmrsZKEtTRFBv LvF5d+8f4JyFlb4NSdk3kUlbjXaVwP+P22BUebaYMi8qSOLJSbxqOv3cISaVsGQJGLggrNk9qU CaLrlY6l3zvoJKpUyL3I8m2G8rhv7L7GVdgAAAA== X-Change-ID: 20260304-topic-sm8x50-spmi-gpio-get-direction-23f7409554ca To: Bjorn Andersson , Linus Walleij , Bartosz Golaszewski , "Ivan T. Ivanov" , Rob Herring , Fenglin Wu Cc: linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2365; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=RntdKYFLAqg2iNXVxuafdBAsXRNURhR71Krw3kGsMIE=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBpqG64irsi8N17h8N5sbgUg7bcexvc72hMsxp3iQji oQtx6MiJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCaahuuAAKCRB33NvayMhJ0SUQD/ 4oj0zKoE/6ULkgVSaCUseQ2L/e3YD3GwdQQX6Mhd6fcEy2Jn+isdzqAM84NaQMgewuwij8ekxHdmuN NrhyP/7/9JqsjoJZa1bY8R2I0EbUmgxpiKInTuii1NOyDkscCTViufhXrty4dxYxGPF4qOvDV5IUPN VCtEjDrYgdON+Bjjd5Dy8fMIRLTlfWCD6dheVjI6Jd5H83a9tnvu5BxtlcKW9LhoQ7joTGChIxk1uE zAcv3uLLxn0CZAFq/1TXnpkO9oKbiywgsQb8LNpRh2gCmzkTkjZYqu+W4Y0Gv+OrmS7wylqnRX3y2s SjnutBvPrFD33fHGDKlDDsye5qOLMOAVDcZF3XqCeWJL4sesw7yUqPy7+Al/Ritgz5BAZOmzhJ9p+g JP5XnZAXTRJd3kNeKJbijj2TiQ36rA47q9LMccEgnfjW7t8dO6/XVAWnhplgha6agf4RWFGfB4Al2M N2B49Lf7j8+HI/i/Ssa4ad5mQO+V2CmsZroBC/KHFmqXqAZpnafR13D4up6wZH7MEc2e072kLPfhDm RCTV7qMb+QdASJ75d6ouXt/i7aLGNCuh9Fc+VjJddJRnnQXJU6/Ato9RQ6iiuCMd3JcpbX6WzTRnrC 9ZwRXvU0d/nDUw/2jUGVtm/yOMRSv0GW0+69Ue8GC8b1Ojcme4AtqQJRoXfg== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE GPIO controller driver should typically implement the .get_direction() callback as GPIOLIB internals may try to use it to determine the state of a pin. Since introduction of shared proxy, it prints a warning splat when using a shared spmi gpio. The implementation is not easy because the controller supports enabling the input and output logic at the same time, so we aligns on the behaviour of the .get() operation and return -EINVAL in other situations. Fixes: eadff3024472 ("pinctrl: Qualcomm SPMI PMIC GPIO pin controller drive= r") Fixes: d7b5f5cc5eb4 ("pinctrl: qcom: spmi-gpio: Add support for GPIO LV/MV = subtype") Signed-off-by: Neil Armstrong Reviewed-by: Bartosz Golaszewski Reviewed-by: Konrad Dybcio --- drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c b/drivers/pinctrl/qco= m/pinctrl-spmi-gpio.c index 83f940fe30b2..d02d42513ebb 100644 --- a/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +++ b/drivers/pinctrl/qcom/pinctrl-spmi-gpio.c @@ -723,6 +723,21 @@ static const struct pinconf_ops pmic_gpio_pinconf_ops = =3D { .pin_config_group_dbg_show =3D pmic_gpio_config_dbg_show, }; =20 +static int pmic_gpio_get_direction(struct gpio_chip *chip, unsigned pin) +{ + struct pmic_gpio_state *state =3D gpiochip_get_data(chip); + struct pmic_gpio_pad *pad; + + pad =3D state->ctrl->desc->pins[pin].drv_data; + + if (!pad->is_enabled || pad->analog_pass || + (!pad->input_enabled && !pad->output_enabled)) + return -EINVAL; + + /* Make sure the state is aligned on what pmic_gpio_get() returns */ + return pad->input_enabled ? GPIO_LINE_DIRECTION_IN : GPIO_LINE_DIRECTION_= OUT; +} + static int pmic_gpio_direction_input(struct gpio_chip *chip, unsigned pin) { struct pmic_gpio_state *state =3D gpiochip_get_data(chip); @@ -801,6 +816,7 @@ static void pmic_gpio_dbg_show(struct seq_file *s, stru= ct gpio_chip *chip) } =20 static const struct gpio_chip pmic_gpio_gpio_template =3D { + .get_direction =3D pmic_gpio_get_direction, .direction_input =3D pmic_gpio_direction_input, .direction_output =3D pmic_gpio_direction_output, .get =3D pmic_gpio_get, --- base-commit: 11439c4635edd669ae435eec308f4ab8a0804808 change-id: 20260304-topic-sm8x50-spmi-gpio-get-direction-23f7409554ca Best regards, --=20 Neil Armstrong