On Fri, Nov 22, 2019 at 02:18:12PM +0000, Akash Asthana wrote: > Move ISR registration from startup to probe function to avoid registering > it everytime when the port open is called for driver. > > Signed-off-by: Akash Asthana <akashast@xxxxxxxxxxxxxx> > --- > Changes in v6: > - Rebased on tty-next branch > > Changes in v5: > - No change. > > Changes in v4: > - As per Stephen's comment, move ISR registration(later in probe) after > registering uart port with serial core. > - As per Greg's comment, corrected returning of PTR value from integer type > function(probe). > > Changes in v3: > - As per Stephen's comment, using devm_kasprintf instead of scnprintf API. > > drivers/tty/serial/qcom_geni_serial.c | 38 ++++++++++++++++++++++++----------- > 1 file changed, 26 insertions(+), 12 deletions(-) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index 14c6306..634054a 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > > ... > > @@ -1307,7 +1307,21 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) > port->handle_rx = console ? handle_rx_console : handle_rx_uart; > if (!console) > device_create_file(uport->dev, &dev_attr_loopback); > - return uart_add_one_port(drv, uport); > + > + ret = uart_add_one_port(drv, uport); > + if (ret) > + return ret; > + > + irq_set_status_flags(uport->irq, IRQ_NOAUTOEN); > + ret = devm_request_irq(uport->dev, uport->irq, qcom_geni_serial_isr, > + IRQF_TRIGGER_HIGH, port->name, uport); > + if (ret) { > + dev_err(uport->dev, "Failed to get IRQ ret %d\n", ret); > + uart_remove_one_port(drv, uport); > + return ret; nit: could fall through > + } > + > + return ret; nit: if not falling through above this could/should be 0. Reviewed-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>