Message ID | 20211217151034.62046-1-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v1,1/1] serial: 8520_mtk: Prepare for platform_get_irq_optional() changes | expand |
On Fri, Dec 17, 2021 at 05:10:34PM +0200, Andy Shevchenko wrote: > The platform_get_irq_optional() is going to be changed in a way > that the result of it: > = 0 means no IRQ is provided > < 0 means the error which needs to be propagated to the upper layers > > 0 valid vIRQ is allocated What about 0 being a valid irq? > In this case, drop check for 0. Note, the 0 is not valid vIRQ and > platform_get_irq_optional() issues a big WARN() in such case, But it still is a valid irq, so why did you just break things? Yes, a warning will happen, but the driver and platform will still work. > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/tty/serial/8250/8250_mtk.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c > index fb65dc601b23..8d3e16d7bf63 100644 > --- a/drivers/tty/serial/8250/8250_mtk.c > +++ b/drivers/tty/serial/8250/8250_mtk.c > @@ -641,7 +641,7 @@ static int __maybe_unused mtk8250_resume(struct device *dev) > struct mtk8250_data *data = dev_get_drvdata(dev); > int irq = data->rx_wakeup_irq; > > - if (irq >= 0) > + if (irq > 0) > disable_irq_wake(irq); Why change this now? What does this solve at this point in time? thanks, greg k-h
On Fri, Dec 17, 2021 at 05:54:55PM +0100, Greg Kroah-Hartman wrote: > On Fri, Dec 17, 2021 at 05:10:34PM +0200, Andy Shevchenko wrote: > > The platform_get_irq_optional() is going to be changed in a way > > that the result of it: > > = 0 means no IRQ is provided > > < 0 means the error which needs to be propagated to the upper layers > > > 0 valid vIRQ is allocated > > What about 0 being a valid irq? For this driver it can't be possible. The driver is instantiated via DT only and OF APIs never return 0 for IRQ. If it's the case, it's a regression in the OF APIs. I can elaborate in the commit message. > > In this case, drop check for 0. Note, the 0 is not valid vIRQ and > > platform_get_irq_optional() issues a big WARN() in such case, > > But it still is a valid irq, so why did you just break things? Yes, a > warning will happen, but the driver and platform will still work. In general yes, but not in this case. See above. ... > > - if (irq >= 0) > > + if (irq > 0) > > disable_irq_wake(irq); > > Why change this now? What does this solve at this point in time? As explained in the commit message, it's a preparation patch to fix the logic behind platform_get_irq_optional().
diff --git a/drivers/tty/serial/8250/8250_mtk.c b/drivers/tty/serial/8250/8250_mtk.c index fb65dc601b23..8d3e16d7bf63 100644 --- a/drivers/tty/serial/8250/8250_mtk.c +++ b/drivers/tty/serial/8250/8250_mtk.c @@ -641,7 +641,7 @@ static int __maybe_unused mtk8250_resume(struct device *dev) struct mtk8250_data *data = dev_get_drvdata(dev); int irq = data->rx_wakeup_irq; - if (irq >= 0) + if (irq > 0) disable_irq_wake(irq); pinctrl_pm_select_default_state(dev);