[PATCH v2] serial: ucc_uart: Use platform IRQ helper

From: Rosen Penev

Date: Sun Sep 27 2026 - 16:43:56 EST


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 <rosenp@xxxxxxxxx>
---
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