There are two problems here. The issue you're seeing is fixed in next but
not in mainline due to my omission. I will send a patch for that.
On the other hand, the pinctrl driver in question should be fixed too.
Can you try the following change:
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c
b/drivers/pinctrl/intel/pinctrl-intel.c
index d889c7c878e2..0c6925b53d9f 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -1068,7 +1068,11 @@ static int intel_gpio_get_direction(struct
gpio_chip *chip, unsigned int offset)
pin = intel_gpio_to_pin(pctrl, offset, NULL, NULL);
if (pin < 0)
- return -EINVAL;
+ /*
+ * For pins configured to functions other than GPIO, default
+ * to the safe INPUT value.
+ */
+ return GPIO_LINE_DIRECTION_IN;
reg = intel_get_padcfg(pctrl, pin, PADCFG0);
if (!reg)
?
FYI: This was uncovered by commit 9d846b1aebbe ("gpiolib: check the
return value of gpio_chip::get_direction()").
Bart
Hi Bart - I don't see this pincntrl patch in mainline yet - what's your thinking on this?