(Fix Andy's Cc: - apologies) On 06/03/2018 13:42, Javier Arteaga wrote: > Allows querying GPIO direction from the pad config register. > If the pad is not in GPIO mode, return an error. > > Signed-off-by: Javier Arteaga <javier@xxxxxxxxxx> > --- > This is needed by the drivers for the UP Squared board, an APL-based > platform. (For now, these drivers are out-of-tree.) > > An earlier version of this patch was reviewed some time ago by Andy > Shevchenko outside of the mailing lists: > <https://github.com/emutex/ubilinux-kernel/commit/708a776f2ffd1b1c> > > drivers/pinctrl/intel/pinctrl-intel.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c > index 96e73e30204e..1e24a6b8a64e 100644 > --- a/drivers/pinctrl/intel/pinctrl-intel.c > +++ b/drivers/pinctrl/intel/pinctrl-intel.c > @@ -788,6 +788,24 @@ static void intel_gpio_set(struct gpio_chip *chip, unsigned offset, int value) > raw_spin_unlock_irqrestore(&pctrl->lock, flags); > } > > +static int intel_gpio_get_direction(struct gpio_chip *chip, unsigned int offset) > +{ > + struct intel_pinctrl *pctrl = gpiochip_get_data(chip); > + void __iomem *reg; > + u32 padcfg0; > + > + reg = intel_get_padcfg(pctrl, offset, PADCFG0); > + if (!reg) > + return -EINVAL; > + > + padcfg0 = readl(reg); > + > + if (padcfg0 & PADCFG0_PMODE_MASK) > + return -EINVAL; > + > + return !!(padcfg0 & PADCFG0_GPIOTXDIS); > +} > + > static int intel_gpio_direction_input(struct gpio_chip *chip, unsigned offset) > { > return pinctrl_gpio_direction_input(chip->base + offset); > @@ -804,6 +822,7 @@ static const struct gpio_chip intel_gpio_chip = { > .owner = THIS_MODULE, > .request = gpiochip_generic_request, > .free = gpiochip_generic_free, > + .get_direction = intel_gpio_get_direction, > .direction_input = intel_gpio_direction_input, > .direction_output = intel_gpio_direction_output, > .get = intel_gpio_get, > -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html