linux/drivers/pinctrl/qcom
Neil Armstrong 2634475324 pinctrl: qcom: spmi-gpio: implement .get_direction()
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: eadff30244 ("pinctrl: Qualcomm SPMI PMIC GPIO pin controller driver")
Fixes: d7b5f5cc5e ("pinctrl: qcom: spmi-gpio: Add support for GPIO LV/MV subtype")
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Linus Walleij <linusw@kernel.org>
2026-03-10 10:21:52 +01:00
..
Kconfig pinctrl: qcom: sm8350-lpass-lpi: Merge with SC7280 to fix I2S2 and SWR TX pins 2026-01-19 01:13:22 +01:00
Kconfig.msm pinctrl: qcom: add the tlmm driver for Kaanapali platforms 2025-10-13 12:26:05 +02:00
Makefile pinctrl: qcom: sm8350-lpass-lpi: Merge with SC7280 to fix I2S2 and SWR TX pins 2026-01-19 01:13:22 +01:00
pinctrl-apq8064.c pinctrl: qcom: switch to devm_gpiochip_add_data() 2025-06-09 10:16:45 +02:00
pinctrl-apq8084.c pinctrl: qcom: switch to devm_gpiochip_add_data() 2025-06-09 10:16:45 +02:00
pinctrl-glymur.c pinctrl: qcom: glymur: Add Mahua TLMM support 2026-01-21 13:11:56 +01:00
pinctrl-ipq4019.c pinctrl: qcom: switch to devm_gpiochip_add_data() 2025-06-09 10:16:45 +02:00
pinctrl-ipq5018.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-ipq5332.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-ipq5424.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-ipq6018.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-ipq8064.c pinctrl: qcom: switch to devm_gpiochip_add_data() 2025-06-09 10:16:45 +02:00
pinctrl-ipq8074.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-ipq9574.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-kaanapali.c pinctrl: qcom: add the tlmm driver for Kaanapali platforms 2025-10-13 12:26:05 +02:00
pinctrl-lpass-lpi.c pinctrl: lpass-lpi: implement .get_direction() for the GPIO driver 2026-01-27 10:06:27 +01:00
pinctrl-lpass-lpi.h pinctrl: qcom: lpass-lpi: Add ability to use custom pin offsets 2025-09-10 15:35:41 +02:00
pinctrl-mdm9607.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-mdm9615.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-milos.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm.c pinctrl: qcom: msm: Fix deadlock in pinmux configuration 2025-11-12 13:41:34 +01:00
pinctrl-msm.h pinctrl: qcom: add infrastructure for marking pin functions as GPIOs 2025-09-08 14:23:07 +02:00
pinctrl-msm8x74.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8226.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8660.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8909.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8916.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8917.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8953.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8960.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8976.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8994.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8996.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-msm8998.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-qcm2290.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-qcs404.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-qcs615.c pinctrl: qcom: qcs615: Add missing dual edge GPIO IRQ errata flag 2026-02-23 10:34:04 +01:00
pinctrl-qcs8300.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-qdf2xxx.c pinctrl: qcom: switch to devm_gpiochip_add_data() 2025-06-09 10:16:45 +02:00
pinctrl-qdu1000.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sa8775p.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sar2130p.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sc7180.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sc7280-lpass-lpi.c pinctrl: qcom: sm8350-lpass-lpi: Merge with SC7280 to fix I2S2 and SWR TX pins 2026-01-19 01:13:22 +01:00
pinctrl-sc7280.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sc8180x.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sc8280xp-lpass-lpi.c pinctrl: Switch back to struct platform_driver::remove() 2024-10-11 21:45:47 +02:00
pinctrl-sc8280xp.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sdm660-lpass-lpi.c pinctrl: qcom: sdm660-lpass-lpi: Make groups and functions variables static 2026-02-24 10:51:30 +01:00
pinctrl-sdm660.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sdm670.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sdm845.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sdx55.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sdx65.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sdx75.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm4250-lpass-lpi.c pinctrl: Switch back to struct platform_driver::remove() 2024-10-11 21:45:47 +02:00
pinctrl-sm4450.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm6115-lpass-lpi.c pinctrl: Switch back to struct platform_driver::remove() 2024-10-11 21:45:47 +02:00
pinctrl-sm6115.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm6125.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm6350.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm6375.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm7150.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm8150.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm8250-lpass-lpi.c pinctrl: qcom: sm8250-lpass-lpi: Fix i2s2_data_groups definition 2026-02-03 01:22:06 +01:00
pinctrl-sm8250.c pinctrl: qcom: sm8250: Add egpio support 2025-09-08 14:24:32 +02:00
pinctrl-sm8350.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm8450-lpass-lpi.c pinctrl: Switch back to struct platform_driver::remove() 2024-10-11 21:45:47 +02:00
pinctrl-sm8450.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm8550-lpass-lpi.c pinctrl: Switch back to struct platform_driver::remove() 2024-10-11 21:45:47 +02:00
pinctrl-sm8550.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm8650-lpass-lpi.c pinctrl: Switch back to struct platform_driver::remove() 2024-10-11 21:45:47 +02:00
pinctrl-sm8650.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-sm8750.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
pinctrl-spmi-gpio.c pinctrl: qcom: spmi-gpio: implement .get_direction() 2026-03-10 10:21:52 +01:00
pinctrl-spmi-mpp.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-ssbi-gpio.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-ssbi-mpp.c pinctrl: generic: rename PIN_CONFIG_OUTPUT to LEVEL 2025-09-08 14:24:20 +02:00
pinctrl-x1e80100.c pinctrl: qcom: mark the `gpio` and `egpio` pins function as non-strict functions 2025-09-08 14:23:15 +02:00
tlmm-test.c pinctrl: qcom: add multi TLMM region option parameter 2025-07-03 23:44:21 +02:00