Thread (38 messages) 38 messages, 7 authors, 2016-09-18

Re: [PATCH] pinctrl: cherryview: Do not mask all interrupts on probe

From: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: 2016-09-09 06:25:14
Also in: lkml

On Fri, Sep 09, 2016 at 12:28:43AM +0800, Phidias Chiang wrote:
On Thu, Sep 08, 2016 at 01:24:02PM +0300, Mika Westerberg wrote:
quoted
On Thu, Sep 08, 2016 at 06:13:03PM +0800, Phidias Chiang wrote:
quoted
On Thu, Aug 18, 2016 at 04:58:13PM +0300, Mika Westerberg wrote:
quoted
On Thu, Aug 18, 2016 at 03:52:57PM +0200, Anisse Astier wrote:
quoted
On Thu, Aug 18, 2016 at 2:13 PM, Mika Westerberg
[off-list ref] wrote:
quoted
On Wed, Aug 17, 2016 at 03:42:58PM +0200, Anisse Astier wrote:
quoted
pin 25 (GPIO_SUS6) GPIO ctrl0 0xec918201 ctrl1 0x05c00001
It is this one (GPIO_SUS6).

I wonder if we can relax the driver so that it only masks pins which are
not configured to generate interrupts by the BIOS. I quickly tried
following on one Braswell machine and it did not generate spurious
interrupts.

Can you check if this works for you?
I tried it, your patch is working. It gives the same result as not
clearing the north community. I receive the ACPI events.
OK, thanks for testing.

I'll make a formal patch and submit it with you CC'd. Let's hope it will
not break anything :)
Hi, we've also found this issue on HP X360, but both patches don't work
with on it.

My current workaround is to save INTMASK before clearing then restore
it after, but I'm not sure if there's any side-effect by doing so.
Did you try the latest patch here?

https://patchwork.ozlabs.org/patch/661413/
yes, that, including another patch in this thread. I inserted some debug
message and found out INTMASK was still cleared after `gpiochip_irqchip_add`,
hope it helps.
Hmm, how can that happen? The patch removes clearing of INTMASK and only
other place where it is cleared temporarily is on resume. Can you add
dev_info() calls like:

	/* Clear all interrupts */
	chv_writel(0xffff, pctrl->regs + CHV_INTSTAT);
	dev_info(pctrl->dev, "INTMASK0: 0x%08x\n", readl(pctrl->regs + CHV_INTMASK));

	...

	gpiochip_set_chained_irqchip(chip, &chv_gpio_irqchip, irq,
				     chv_gpio_irq_handler);
	dev_info(pctrl->dev, "INTMASK1: 0x%08x\n", readl(pctrl->regs + CHV_INTMASK));
	return 0;

It should print the same values both time.

Also which interrupt does not work and can you send me output of
/proc/interrupts?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help