Thread (71 messages) 71 messages, 19 authors, 2026-03-13

Re: [PATCH v4 07/10] arm64: select HAVE_SHARED_GPIOS for ARCH_QCOM

From: Bartosz Golaszewski <brgl@kernel.org>
Date: 2026-01-08 10:52:29
Also in: linux-arm-msm, linux-gpio

On Thu, Jan 8, 2026 at 10:44 AM Pankaj Patil
[off-list ref] wrote:
On 1/8/2026 2:15 PM, Bartosz Golaszewski wrote:
quoted
On Thu, Jan 8, 2026 at 7:49 AM Pankaj Patil
[off-list ref] wrote:
quoted
On 1/7/2026 6:08 PM, Bartosz Golaszewski wrote:
quoted
On Wed, Jan 7, 2026 at 12:07 PM Pankaj Patil
[off-list ref] wrote:
quoted
On 11/12/2025 7:25 PM, Bartosz Golaszewski wrote:
quoted
From: Bartosz Golaszewski <redacted>

Some qualcomm platforms use shared GPIOs. Enable support for them by
selecting the Kconfig switch provided by GPIOLIB.

Acked-by: Linus Walleij <redacted>
Signed-off-by: Bartosz Golaszewski <redacted>
---
 arch/arm64/Kconfig.platforms | 1 +
 1 file changed, 1 insertion(+)
diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
index 13173795c43d4f28e2d47acc700f80a165d44671..3dbff0261f0add0516d8cb3fd0f29e277af94f20 100644
--- a/arch/arm64/Kconfig.platforms
+++ b/arch/arm64/Kconfig.platforms
@@ -316,6 +316,7 @@ config ARCH_QCOM
      select GPIOLIB
      select PINCTRL
      select HAVE_PWRCTRL if PCI
+     select HAVE_SHARED_GPIOS
      help
        This enables support for the ARMv8 based Qualcomm chipsets.
Enabling shared gpios is breaking hamoa and glymur boot on next-20260106
For hamoa - reg_fixed_voltage_probe which calls gpio api is breaking
Please find the log here - https://lava-oss.qualcomm.com/scheduler/job/24722#L3514

For Glymur - qcom_pcie_parse_perst calls the gpio api <4>[    2.910982] WARNING: drivers/gpio/gpiolib-shared.c:493 at gpio_shared_add_proxy_lookup+0x160/0x24c, CPU#1: kworker/u75:0/109 <4>[    2.911027] Call trace: <4>[    2.911028]  gpio_shared_add_proxy_lookup+0x160/0x24c (P) <4>[    2.911030]  gpiod_find_and_request+0x1c0/0x504 <4>[    2.911032]  devm_fwnode_gpiod_get_index+0x1c/0x6c <4>[    2.911034]  qcom_pcie_parse_perst+0x70/0x150 <4>[    2.911037]  qcom_pcie_probe+0x414/0x804 <4>[    2.911039]  platform_probe+0x5c/0x98 <4>[    2.911042] qcom-eusb2-repeater c448000.spmi:pmic@9:phy@fd00: supply vdd18 not found, using dummy regulator <4>[    2.911043]  really_probe+0xbc/0x298 <4>[    2.911045]  __driver_probe_device+0x78/0x12c <4>[    2.911047]  driver_probe_device+0x3c/0x15c <4>[    2.911049]  __device_attach_driver+0xb8/0x134 <4>[    2.911050]  bus_for_each_drv+0x84/0xe0 <4>[    2.911052]  __device_attach_async_helper+0xac/0xd0 <4>[    2.911053]  async_run_entry_fn+0x34/0xe0
<4>[    2.911055]  process_one_work+0x14c/0x28c <4>[    2.911058]  worker_thread+0x188/0x304 <4>[    2.911059]  kthread+0x11c/0x128 <4>[    2.911060] qcom-eusb2-repeater c448000.spmi:pmic@9:phy@fd00: supply vdd3 not found, using dummy regulator <4>[    2.911061]  ret_from_fork+0x10/0x20 <4>[    2.911063] ---[ end trace 0000000000000000 ]--- <3>[    2.911065] qcom-pcie 1b40000.pci: error -ENOENT: Failed to parse Root Port: -2 <3>[    2.911069] qcom-pcie 1b40000.pci: probe with driver qcom-pcie failed with error -2
Reverting this commit fixes the boot on both platforms
Hi!

This is not really the offending commit, it's a recent one in the
implementation. The issue should be fixed by the following series[1]
that will be in the next next tag. Can you give it a try?

Bart

[1] https://lore.kernel.org/all/20260106-gpio-shared-fixes-v2-0-c7091d2f7581@oss.qualcomm.com/ (local)
With the linked patchset applied I still see the same issue

Pankaj
Is the gpio-shared-proxy module available? If not, can you change the
config to make it built-in like CONFIG_GPIO_SHARED_PROXY=y?

Bartosz
With CONFIG_GPIO_SHARED_PROXY=y the issue remains the same
Ok, I believe there must be an issue with environment differences
because I'm not seeing this.

Can you enable CONFIG_DEBUG_GPIO in config and post the entire kernel
log to some pastebin? Can you also post the output of gpiodetect and
gpioinfo?

Thanks
Bartosz
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help