Avoid calling irq_dispose_mapping() by letting the platform_device machinery handle it. Also enable possibility of handling -EPROBE_DEFER and other errors. Handle before any allocation or anything to avoid dealing with gotos.
Assisted-by: LLM Signed-off-by: Rosen Penev <[email protected]> --- v2: move platform_get_irq() earlier. drivers/tty/serial/ucc_uart.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/tty/serial/ucc_uart.c b/drivers/tty/serial/ucc_uart.c index 6b7dcbbacd13..96e3c9534de7 100644 --- a/drivers/tty/serial/ucc_uart.c +++ b/drivers/tty/serial/ucc_uart.c @@ -26,7 +26,6 @@ #include <linux/io.h> #include <linux/of.h> #include <linux/of_address.h> -#include <linux/of_irq.h> #include <linux/dma-mapping.h> #include <soc/fsl/qe/ucc_slow.h> @@ -1238,8 +1237,13 @@ static int ucc_uart_probe(struct platform_device *ofdev) struct uart_qe_port *qe_port = NULL; struct resource res; u32 val; + int irq; int ret; + irq = platform_get_irq(ofdev, 0); + if (irq < 0) + return irq; + /* * Determine if we need Soft-UART mode */ @@ -1338,13 +1342,7 @@ static int ucc_uart_probe(struct platform_device *ofdev) goto out_free; } - qe_port->port.irq = irq_of_parse_and_map(np, 0); - if (qe_port->port.irq == 0) { - dev_err(&ofdev->dev, "could not map IRQ for UCC%u\n", - qe_port->ucc_num + 1); - ret = -EINVAL; - goto out_free; - } + qe_port->port.irq = irq; /* * Newer device trees have an "fsl,qe" compatible property for the QE -- 2.55.0
