Message ID | 1573642111-17479-1-git-send-email-akashast@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v5,1/3] tty: serial: qcom_geni_serial: IRQ cleanup | expand |
On Wed, Nov 13, 2019 at 04:18:31PM +0530, 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@codeaurora.org> > --- > Changes in v5: > - No change. This series does not apply at all to my tty-next branch of my tty git tree. What did you make it against? Please rebase it and resend so that it can be applied. thanks, greg k-h
On 11/13/2019 4:26 PM, Greg KH wrote: > On Wed, Nov 13, 2019 at 04:18:31PM +0530, 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@codeaurora.org> >> --- >> Changes in v5: >> - No change. > This series does not apply at all to my tty-next branch of my tty git > tree. What did you make it against? Please rebase it and resend so > that it can be applied. > > thanks, > > greg k-h Please revert below 2 commits and apply the patches in series. 1) 8b7103f31950443fd5727d7d80d3c65416b5a390 (v2 patch) 2) 3e4aaea7a0391d47f6ffff1f10594c658a67c881 (v2 patch) I have verified the same on tty-next branch, it's applying cleanly. Thanks, Akash
On Fri, Nov 15, 2019 at 10:11:40AM +0530, Akash Asthana wrote: > > On 11/13/2019 4:26 PM, Greg KH wrote: > > On Wed, Nov 13, 2019 at 04:18:31PM +0530, 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@codeaurora.org> > > > --- > > > Changes in v5: > > > - No change. > > This series does not apply at all to my tty-next branch of my tty git > > tree. What did you make it against? Please rebase it and resend so > > that it can be applied. > > > > thanks, > > > > greg k-h > > Please revert below 2 commits and apply the patches in series. > > 1) 8b7103f31950443fd5727d7d80d3c65416b5a390 (v2 patch) > > 2) 3e4aaea7a0391d47f6ffff1f10594c658a67c881 (v2 patch) > > I have verified the same on tty-next branch, it's applying cleanly. Can you please send me a series that does the revert and then has your new patches? Or change your patches to work cleanly on the tty-next branch, I don't want to have to do reverts "by hand" like this. Also, how in the world was I supposed to know to do this? Please be considerate of maintainers, we are overworked as it is... thanks, greg k-h
On 11/15/2019 10:22 AM, Greg KH wrote: > On Fri, Nov 15, 2019 at 10:11:40AM +0530, Akash Asthana wrote: >> On 11/13/2019 4:26 PM, Greg KH wrote: >>> On Wed, Nov 13, 2019 at 04:18:31PM +0530, 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@codeaurora.org> >>>> --- >>>> Changes in v5: >>>> - No change. >>> This series does not apply at all to my tty-next branch of my tty git >>> tree. What did you make it against? Please rebase it and resend so >>> that it can be applied. >>> >>> thanks, >>> >>> greg k-h >> Please revert below 2 commits and apply the patches in series. >> >> 1) 8b7103f31950443fd5727d7d80d3c65416b5a390 (v2 patch) >> >> 2) 3e4aaea7a0391d47f6ffff1f10594c658a67c881 (v2 patch) >> >> I have verified the same on tty-next branch, it's applying cleanly. > Can you please send me a series that does the revert and then has your > new patches? Or change your patches to work cleanly on the tty-next > branch, I don't want to have to do reverts "by hand" like this. > > Also, how in the world was I supposed to know to do this? Please be > considerate of maintainers, we are overworked as it is... > > thanks, > > greg k-h Sorry about it! Will take of this in future.
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 @@ -9,6 +9,7 @@ #include <linux/console.h> #include <linux/io.h> #include <linux/iopoll.h> +#include <linux/irq.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_device.h> @@ -101,7 +102,7 @@ struct qcom_geni_serial_port { struct uart_port uport; struct geni_se se; - char name[20]; + const char *name; u32 tx_fifo_depth; u32 tx_fifo_width; u32 rx_fifo_depth; @@ -830,7 +831,7 @@ static void qcom_geni_serial_shutdown(struct uart_port *uport) if (uart_console(uport)) console_stop(uport->cons); - free_irq(uport->irq, uport); + disable_irq(uport->irq); spin_lock_irqsave(&uport->lock, flags); qcom_geni_serial_stop_tx(uport); qcom_geni_serial_stop_rx(uport); @@ -890,21 +891,14 @@ static int qcom_geni_serial_startup(struct uart_port *uport) int ret; struct qcom_geni_serial_port *port = to_dev_port(uport, uport); - scnprintf(port->name, sizeof(port->name), - "qcom_serial_%s%d", - (uart_console(uport) ? "console" : "uart"), uport->line); - if (!port->setup) { ret = qcom_geni_serial_port_setup(uport); if (ret) return ret; } + enable_irq(uport->irq); - ret = request_irq(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); - return ret; + return 0; } static unsigned long get_clk_cfg(unsigned long clk_freq) @@ -1297,6 +1291,12 @@ static int qcom_geni_serial_probe(struct platform_device *pdev) port->rx_fifo_depth = DEF_FIFO_DEPTH_WORDS; port->tx_fifo_width = DEF_FIFO_WIDTH_BITS; + port->name = devm_kasprintf(uport->dev, GFP_KERNEL, + "qcom_geni_serial_%s%d", + uart_console(uport) ? "console" : "uart", uport->line); + if (!port->name) + return -ENOMEM; + irq = platform_get_irq(pdev, 0); if (irq < 0) return irq; @@ -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; + } + + return ret; } static int qcom_geni_serial_remove(struct platform_device *pdev)
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@codeaurora.org> --- 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(-)