Re: [PATCH v1] extcon: int3496: Ignore incorrect IoRestriction for ID pin

From: Hans de Goede
Date: Wed Feb 28 2018 - 09:28:29 EST


Hi,

On 28-02-18 15:27, Andy Shevchenko wrote:
On Tue, 2018-02-27 at 12:59 +0900, Chanwoo Choi wrote:
Hi,

On 2018ë 02ì 27ì 04:34, Andy Shevchenko wrote:
The commit 70216fd937fe introduced a workaround for incorrect

You better to specify the commit id and patch name as following:
commit 70216fd937fe -> commit 70216fd937fe ("extcon: int3496: Set the
id pin to direction-input if necessary")

Will fix in v2.

Note I'm currently running some tests with this patch, should be
done in an hour max.

Regards,

Hans




IoRestriction mode in ACPI table.

Now, when GPIO ACPI library does it in generic way, just set

I recommend that you specify clearly which patch you mention
about GPIO ACPI library.

Do you mean list all of them? It's a bit hard to choose one.

an appropriate quirk flag instead.

Cc: Hans de Goede <hdegoede@xxxxxxxxxx>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
drivers/extcon/extcon-intel-int3496.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/extcon/extcon-intel-int3496.c
b/drivers/extcon/extcon-intel-int3496.c
index 191e99f06a9a..acaccb128fc4 100644
--- a/drivers/extcon/extcon-intel-int3496.c
+++ b/drivers/extcon/extcon-intel-int3496.c
@@ -50,7 +50,11 @@ static const struct acpi_gpio_params vbus_gpios =
{ INT3496_GPIO_VBUS_EN, 0, fal
static const struct acpi_gpio_params mux_gpios = {
INT3496_GPIO_USB_MUX, 0, false };
static const struct acpi_gpio_mapping acpi_int3496_default_gpios[]
= {
- { "id-gpios", &id_gpios, 1 },
+ /*
+ * Some platforms have a bug in ACPI GPIO description
making IRQ
+ * GPIO to be output only. Ask the GPIO core to ignore this
limit.
+ */
+ { "id-gpios", &id_gpios, 1,
ACPI_GPIO_QUIRK_NO_IO_RESTRICTION },
{ "vbus-gpios", &vbus_gpios, 1 },
{ "mux-gpios", &mux_gpios, 1 },
{ },
@@ -112,9 +116,6 @@ static int int3496_probe(struct platform_device
*pdev)
ret = PTR_ERR(data->gpio_usb_id);
dev_err(dev, "can't request USB ID GPIO: %d\n",
ret);
return ret;
- } else if (gpiod_get_direction(data->gpio_usb_id) !=
GPIOF_DIR_IN) {
- dev_warn(dev, FW_BUG "USB ID GPIO not in input
mode, fixing\n");
- gpiod_direction_input(data->gpio_usb_id);
}
data->usb_id_irq = gpiod_to_irq(data->gpio_usb_id);