On 02/09/2015 04:12 PM, Fabio Estevam wrote: > From: Fabio Estevam <fabio.estevam@xxxxxxxxxxxxx> > > Instead of requesting the irq in pl011_startup() and then freeing it on > pl011_shutdown(), we can simply request it inside the probe function, which > makes the code simpler as we do not need to free it. NACK. Many UART drivers support irq assignment with ioctl(TIOCSSERIAL). amba-pl011 is one of these drivers. Regards, Peter Hurley > Signed-off-by: Fabio Estevam <fabio.estevam@xxxxxxxxxxxxx> > --- > drivers/tty/serial/amba-pl011.c | 17 +++++------------ > 1 file changed, 5 insertions(+), 12 deletions(-) > > diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c > index 8d94c19..7dbe4fe 100644 > --- a/drivers/tty/serial/amba-pl011.c > +++ b/drivers/tty/serial/amba-pl011.c > @@ -1586,13 +1586,6 @@ static int pl011_startup(struct uart_port *port) > > writew(uap->im, uap->port.membase + UART011_IMSC); > > - /* > - * Allocate the IRQ > - */ > - retval = request_irq(uap->port.irq, pl011_int, 0, "uart-pl011", uap); > - if (retval) > - goto clk_dis; > - > writew(uap->vendor->ifls, uap->port.membase + UART011_IFLS); > > /* > @@ -1684,11 +1677,6 @@ static void pl011_shutdown(struct uart_port *port) > pl011_dma_shutdown(uap); > > /* > - * Free the interrupt > - */ > - free_irq(uap->port.irq, uap); > - > - /* > * disable the port > * disable the port. It should not disable RTS and DTR. > * Also RTS and DTR state should be preserved to restore > @@ -2224,6 +2212,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) > writew(0, uap->port.membase + UART011_IMSC); > writew(0xffff, uap->port.membase + UART011_ICR); > > + ret = devm_request_irq(&dev->dev, uap->port.irq, pl011_int, 0, > + "uart-pl011", uap); > + if (ret) > + return ret; > + > snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev)); > > amba_ports[i] = uap; > -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html