RE: [PATCH 2/3] pinctrl:Intel: clear interrupt status for every IRQ setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Mon, Mar 14, 2016 at 03:00:41PM +0200, Westerberg, Mika wrote:
> 
> > > Your set_type() is supporting edges but have all IRQs handled by 
> > > handle_simple_irq() rather than handle_edge_irq() for the edges, 
> > > which gives a more robust control flow from IRQ to ACK to calling 
> > > the handler.
> > > 
> > > Zheng/Mika: please look at how the level/edge IRQs are handled in 
> > > drivers/gpio/gpio-pl061.c where I *tried* to do things right, 
> > > switching handler in .set_type() using irq_set_handler_locked(). I 
> > > think you may need to use handle_edge_irq() for the edge IRQs and 
> > > handle_level_irq() for the level IRQs just like I do in the PL061 
> > > driver.
> > 
> > The driver is already doing that as far as I can tell (see 
> > intel_gpio_irq_type()).
> 
> I will check again if we are still missing something there.

> Maybe we can implement ->enable() that clears the status right before interrupt is unmasked? Something like below.
>
> diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
> index c0f5586218c4..b4873a4e25d5 100644
> --- a/drivers/pinctrl/intel/pinctrl-intel.c
> +++ b/drivers/pinctrl/intel/pinctrl-intel.c
> @@ -648,6 +648,33 @@ static const struct gpio_chip intel_gpio_chip = {
 > 	.set = intel_gpio_set,
 > };
 >

The gpio_irq_enable callback way looks better.
I will do the test with this solution and submit it if the unit test passed (no unexpected gpio interrupt).
Thanks.
--
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



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux