Message ID | 20191225132622.90592-1-hdegoede@redhat.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | pinctrl: baytrail: Remove WARN when setting direct-irq pin to output | expand |
Hi, On 25-12-2019 14:26, Hans de Goede wrote: > Suspending Goodix touchscreens requires changing the interrupt pin to > output before sending them a power-down command. Followed by wiggling > the interrupt pin to wake the device up, after which it is put back > in input mode. > > On Cherry Trail device the interrupt pin is listed as a GpioInt ACPI > resource so we can do this without problems as long as we release the > irq before changing the pin to output mode. > > On Bay Trail devices with a Goodix touchscreen direct-irq mode is used > in combination with listing the pin as a normal GpioIo resource. This > works fine, but this triggers the WARN in byt_gpio_set_direction-s output > path because direct-irq support is enabled on the pin. > > This commit removes the WARN call, fixing a bunch of WARN splats in > dmesg on each suspend/resume cycle. > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> This is missing the dropping of rhe now unused conf_ref variable, I already had this fixed, but forgot to do git commit --amend before sending this out, v2 with this fixed coming up. Regards, Hans > --- > drivers/pinctrl/intel/pinctrl-baytrail.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c > index c6f53ed626c9..e7cdfdb4a189 100644 > --- a/drivers/pinctrl/intel/pinctrl-baytrail.c > +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c > @@ -811,15 +811,7 @@ static int byt_gpio_set_direction(struct pinctrl_dev *pctl_dev, > value &= ~BYT_DIR_MASK; > if (input) > value |= BYT_OUTPUT_EN; > - else > - /* > - * Before making any direction modifications, do a check if gpio > - * is set for direct IRQ. On baytrail, setting GPIO to output > - * does not make sense, so let's at least warn the caller before > - * they shoot themselves in the foot. > - */ > - WARN(readl(conf_reg) & BYT_DIRECT_IRQ_EN, > - "Potential Error: Setting GPIO with direct_irq_en to output"); > + > writel(value, val_reg); > > raw_spin_unlock_irqrestore(&byt_lock, flags); >
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c index c6f53ed626c9..e7cdfdb4a189 100644 --- a/drivers/pinctrl/intel/pinctrl-baytrail.c +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c @@ -811,15 +811,7 @@ static int byt_gpio_set_direction(struct pinctrl_dev *pctl_dev, value &= ~BYT_DIR_MASK; if (input) value |= BYT_OUTPUT_EN; - else - /* - * Before making any direction modifications, do a check if gpio - * is set for direct IRQ. On baytrail, setting GPIO to output - * does not make sense, so let's at least warn the caller before - * they shoot themselves in the foot. - */ - WARN(readl(conf_reg) & BYT_DIRECT_IRQ_EN, - "Potential Error: Setting GPIO with direct_irq_en to output"); + writel(value, val_reg); raw_spin_unlock_irqrestore(&byt_lock, flags);
Suspending Goodix touchscreens requires changing the interrupt pin to output before sending them a power-down command. Followed by wiggling the interrupt pin to wake the device up, after which it is put back in input mode. On Cherry Trail device the interrupt pin is listed as a GpioInt ACPI resource so we can do this without problems as long as we release the irq before changing the pin to output mode. On Bay Trail devices with a Goodix touchscreen direct-irq mode is used in combination with listing the pin as a normal GpioIo resource. This works fine, but this triggers the WARN in byt_gpio_set_direction-s output path because direct-irq support is enabled on the pin. This commit removes the WARN call, fixing a bunch of WARN splats in dmesg on each suspend/resume cycle. Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- drivers/pinctrl/intel/pinctrl-baytrail.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)