Re: [PATCH 0/3] tty: serial: 8250 introduce mctrl_gpio helpers

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

 




On Thu, 2017-07-27 at 23:40 -0700, Tony Lindgren wrote:
> * yegorslists@xxxxxxxxxxxxxx <yegorslists@xxxxxxxxxxxxxx> [170727
> 06:18]:
> > From: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx>
> > 
> > This patch series aims to reintroduce the  mctrl_gpio helpers for
> > 8250
> > UARTs.
> > 
> > There are some UARTs that use GPIO signals as a wakeup-sourse.
> > The first patch addresses this issue and tries to destinguish GPIO
> > usage
> > via searching for "wakeup-sourse" property. Though it must be
> > decided whether
> > this property is secure to use for this purpose.
> 
> The wakeup-source part you should be able to handle pretty much
> out of box with Linux generic wakeirqs if configured. See for example
> drivers/i2c/i2c-core.c for the dev_pm_set_dedicated_wake_irq() part.

Here are 3 cases:
1) out-of-band interrupt (usually GPIO) which can be wake source;
2) in-band interrupt (have not seen this for UART, though it's supported
by tty framework for a long time AFAIU);
3) special case when Out-of-band interrupt uses the pin in UART pool of
pins.

We are talking here about case 3).

> As long as the 8250 driver has runtime PM implemented

As you remember it has not (the ugly hack which is used right now is not
correct implementation of RPM).

>  it will wake
> up the 8250 device.

See above, in case 3) we would be able to achieve that when pin mode is
switched to GPIO and back. I don't remember if OMAP uses this approach.

> This should work just fine also with am335x gpios, just configure the
> secondary wakeup gpio interrupt using interrupts-extended in device
> tree. Typically the interrupts are named "irq" and "wakeup". And if
> the
> pin is used as gpio, you can just dev_pm_clear_wake_irq() during
> runtime.

I think this one is not related to case 3).

> If having issues, we're still missing the wakeirq level configuration,
> the patch below should do the trick there.

>  	err = request_threaded_irq(irq, NULL,
> handle_threaded_wake_irq,
> -				   IRQF_ONESHOT, dev_name(dev),
> wirq);
> +				   irq_get_trigger_type(irq) |
> IRQF_ONESHOT,

This is not needed if you use DT or ACPI and framework (serial in this
case) checks for interrupt correctly.

-- 
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Intel Finland Oy
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux