linux/drivers/pinctrl/intel
Andy Shevchenko ca63438dc5 pinctrl: intel: Fix a glitch when updating IRQ flags on a preconfigured line
commit e12963c453 upstream.

The commit af7e3eeb84 ("pinctrl: intel: Disable input and output buffer
when switching to GPIO") hadn't taken into account an update of the IRQ
flags scenario.

When updating the IRQ flags on the preconfigured line the ->irq_set_type()
is called again. In such case the sequential Rx buffer configuration
changes may trigger a falling or rising edge interrupt that may lead,
on some platforms, to an undesired event.

This may happen because each of intel_gpio_set_gpio_mode() and
__intel_gpio_set_direction() updates the pad configuration with a different
value of the GPIORXDIS bit. Notable, that the intel_gpio_set_gpio_mode() is
called only for the pads that are configured as an input. Due to this fact,
integrate the logic of __intel_gpio_set_direction() call into the
intel_gpio_set_gpio_mode() so that the Rx buffer won't be disabled and
immediately re-enabled.

Fixes: af7e3eeb84 ("pinctrl: intel: Disable input and output buffer when switching to GPIO")
Reported-by: Kane Chen <kane.chen@intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Grace Kao <grace.kao@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-08 18:34:11 +01:00
..
Kconfig pinctrl: intel: Add Intel Alder Lake-S pin controller support 2020-11-04 12:33:19 +02:00
Makefile pinctrl: intel: Add Intel Alder Lake-S pin controller support 2020-11-04 12:33:19 +02:00
pinctrl-alderlake.c pinctrl: intel: Add Intel Alder Lake-S pin controller support 2020-11-04 12:33:19 +02:00
pinctrl-baytrail.c pinctrl: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:39 +01:00
pinctrl-broxton.c pinctrl: broxton: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-cannonlake.c pinctrl: cannonlake: Modify COMMUNITY macros to be consistent 2020-09-30 11:43:56 +02:00
pinctrl-cedarfork.c pinctrl: cedarfork: Update pin names according to v1.13c 2019-04-03 14:49:47 +03:00
pinctrl-cherryview.c pinctrl: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:39 +01:00
pinctrl-denverton.c pinctrl: denverton: Update pin names according to v1.08 2019-08-08 12:57:01 +03:00
pinctrl-elkhartlake.c pinctrl: intel: Add Intel Elkhart Lake pin controller support 2020-11-04 12:33:19 +02:00
pinctrl-emmitsburg.c pinctrl: intel: Add Intel Emmitsburg pin controller support 2020-07-21 11:44:21 +03:00
pinctrl-geminilake.c pinctrl: geminilake: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-icelake.c pinctrl: icelake: Use generic flag for special GPIO base treatment 2020-04-14 16:17:13 +03:00
pinctrl-intel.c pinctrl: intel: Fix a glitch when updating IRQ flags on a preconfigured line 2022-02-08 18:34:11 +01:00
pinctrl-intel.h pinctrl: intel: Convert capability list to features 2021-01-08 16:04:30 +02:00
pinctrl-jasperlake.c pinctrl: jasperlake: Fix HOSTSW_OWN offset 2020-11-16 12:07:57 +02:00
pinctrl-lakefield.c pinctrl: intel: Add Intel Lakefield pin controller support 2020-11-02 22:32:13 +02:00
pinctrl-lewisburg.c pinctrl: lewisburg: Update number of pins in community 2021-04-13 14:09:48 +03:00
pinctrl-lynxpoint.c pinctrl: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:39 +01:00
pinctrl-merrifield.c pinctrl: merrifield: Set default bias in case no particular value given 2020-11-16 12:07:57 +02:00
pinctrl-sunrisepoint.c pinctrl: sunrisepoint: Modify COMMUNITY macros to be consistent 2020-09-30 11:43:56 +02:00
pinctrl-tigerlake.c pinctrl: tigerlake: Fix GPIO mapping for newer version of software 2021-08-04 18:47:50 +03:00