Messages in this thread Patch in this message | | | Date | Sat, 26 Apr 2014 11:42:45 +0800 | From | "Jin, Yao" <> | Subject | Re: [PATCH] pinctrl-baytrail: fix for irq descriptor conflict on ASUS T100TA |
| |
On 2014/4/26 11:04, Jin, Yao wrote: > > > On 2014/4/25 23:13, Adam Williamson wrote: >> On Fri, 2014-04-25 at 11:32 +0200, Linus Walleij wrote: >>> On Thu, Apr 24, 2014 at 11:33 PM, Adam Williamson <awilliam@redhat.com> wrote: >>> >>>> Well, I just ran another test too. I built a kernel (3.15rc2) with both >>>> v3 of Doug's SDIO device enumeration patch - >>>> http://dougvj.net/baytrail_gpio_quirk_v3.patch - and the new patch for >>>> the IRQ allocation issue by Thomas Gleixner, >>>> https://patchwork.kernel.org/patch/4051581/ . That kernel gives me a >>>> working touchscreen. Note that >>>> http://dougvj.net/baytrail_gpio_quirk_v3.patch includes both the blocks >>>> you mention (i.e. it adds INT33FC in both places). >>>> >>>> So, it really seems like for me at least, it's the combination of Doug's >>>> patch and your approach to fixing the IRQ allocation issue that breaks >>>> the touchscreen. Thomas' approach, even combined with Doug's patch, >>>> seems to work fine. >>> >>> Please make sure to provide a Tested-by: tag to Thomas so he >>> knows this is merge material. >> >> Well, I'd rather someone test on the box that's actually affected by the >> IRQ allocation conflict lockups so we can confirm it actually fixes >> them :) >> > > I have tried the Thomas Gleixner's patch on 3.14.0 with i915 loading, > the irq conflict disappears. > --
I think we still need a small modification on pinctrl-baytrail.c, that is moving gpiochip_add forward, otherwise the to_irq method is not set.
diff --git a/drivers/pinctrl/pinctrl-baytrail.c b/drivers/pinctrl/pinctrl-baytrail.c index e599834..fdfb84b 100644 --- a/drivers/pinctrl/pinctrl-baytrail.c +++ b/drivers/pinctrl/pinctrl-baytrail.c @@ -491,12 +491,6 @@ static int byt_gpio_probe(struct platform_device *pdev) gc->can_sleep = false; gc->dev = dev;
- ret = gpiochip_add(gc); - if (ret) { - dev_err(&pdev->dev, "failed adding byt-gpio chip\n"); - return ret; - } - /* set up interrupts */ irq_rc = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (irq_rc && irq_rc->start) { @@ -514,6 +508,12 @@ static int byt_gpio_probe(struct platform_device *pdev) irq_set_chained_handler(hwirq, byt_gpio_irq_handler); }
+ ret = gpiochip_add(gc); + if (ret) { + dev_err(&pdev->dev, "failed adding byt-gpio chip\n"); + return ret; + } + pm_runtime_enable(dev);
return 0; > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >
| |