OSDN Git Service

extcon: int3496: Request non-exclusive access to the ID GPIO
authorHans de Goede <hdegoede@redhat.com>
Tue, 28 Dec 2021 17:01:39 +0000 (18:01 +0100)
committerChanwoo Choi <cw00.choi@samsung.com>
Fri, 13 May 2022 08:03:40 +0000 (17:03 +0900)
Some DSDTs are buggy and do a read from the ID pin during the ACPI
initialization, causing the pin to be marked as owned by:
"ACPI:OpRegion" and causing gpiod_get() to fail with -EBUSY.

Pass the GPIOD_FLAGS_BIT_NONEXCLUSIVE flag to the gpiod_get() call
to work around this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
drivers/extcon/extcon-intel-int3496.c

index df6ab4e..2060557 100644 (file)
@@ -106,7 +106,8 @@ static int int3496_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       data->gpio_usb_id = devm_gpiod_get(dev, "id", GPIOD_IN);
+       data->gpio_usb_id =
+               devm_gpiod_get(dev, "id", GPIOD_IN | GPIOD_FLAGS_BIT_NONEXCLUSIVE);
        if (IS_ERR(data->gpio_usb_id)) {
                ret = PTR_ERR(data->gpio_usb_id);
                dev_err(dev, "can't request USB ID GPIO: %d\n", ret);