Re: [PATCH v4 00/10] gpio: improve support for shared GPIOs

Krzysztof Kozlowski
2025-11-21T10:20:28Z

On 21/11/2025 10:03, Bartosz Golaszewski wrote:
> On Fri, Nov 21, 2025 at 1:28 AM Val Packett <val@packett.cool> wrote:
>>
>> Hi,
>>
>> On 11/12/25 10:55 AM, Bartosz Golaszewski wrote:
>>> ---
>>> Bartosz Golaszewski (10):
>>> string: provide strends()
>>> gpiolib: define GPIOD_FLAG_SHARED
>>> gpiolib: implement low-level, shared GPIO support
>>> gpio: shared-proxy: implement the shared GPIO proxy driver
>>> gpiolib: support shared GPIOs in core subsystem code
>>> gpio: provide gpiod_is_shared()
>>> arm64: select HAVE_SHARED_GPIOS for ARCH_QCOM
>>> ASoC: wsa881x: drop GPIOD_FLAGS_BIT_NONEXCLUSIVE flag from GPIO lookup
>>> ASoC: wsa883x: drop GPIOD_FLAGS_BIT_NONEXCLUSIVE flag from GPIO lookup
>>> regulator: make the subsystem aware of shared GPIOs
>>
>> this seems to actually have caused a regression for me, audio does not
>> initialize anymore on hamoa due to EBUSY since upgrading
>> from next-20251114 to next-20251118 or next-20251120:
>>
>
> Thanks for the heads-up.
>
>> [ 11.748781] platform
>> 6800000.remoteproc:glink-edge:gpr:service@1:dais: Adding to iommu group 30
>> [ 11.785864] wsa_macro 6aa0000.codec: using zero-initialized flat
>> cache, this may cause unexpected behavior
>> [ 11.796964] reset-gpio reset-gpio.0: error -EBUSY: Could not get
>> reset gpios
>> [ 11.796984] reset-gpio reset-gpio.0: probe with driver reset-gpio
>> failed with error -16
>> [ 11.894662] reset-gpio reset-gpio.1: error -EBUSY: Could not get
>> reset gpios
>> [ 11.894676] reset-gpio reset-gpio.1: probe with driver reset-gpio
>> failed with error -16
>
> It seems like it's the reset-gpio driver, not shared GPIOLIB path?
> This driver has never used the GPIOD_FLAGS_BIT_NONEXCLUSIVE flag.

NONEXCLUSIVE does not matter here. I think this is just broken code -
your patch 3 goes through allnodes for_each_property_of_node() and then
assumes it is shared GPIO, so probably this nicely breaks existing DTS
and reset-gpio. Well, it is not a shared GPIO, so all your assumptions
here are just wrong.

reset-gpio is already used on multiple Qualcomm and other SoC platforms.

Best regards,
Krzysztof