[PATCH 3/4] serial: amba-pl011: Add Tegra264 UART support

Kartik Rajput
2026-02-25T06:59:53Z

Add support for the NVIDIA Tegra264 UART controller, which is derived
from the AMBA PL011 design.

On Tegra264, the fractional baud rate divisor (FBRD) register is broken.
Using IBRD alone may not achieve the required baud rate
tolerance. Enable the skip_ibrd_fbrd and set_uartclk_rate flags for
the NVIDIA variant.

Signed-off-by: Kartik Rajput <kkartik@nvidia.com>
---
drivers/tty/serial/amba-pl011.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index ad06dc4cdf6e..7f8deb30650a 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -218,6 +218,28 @@ static struct vendor_data vendor_st = {
.get_fifosize = get_fifosize_st,
};

+static unsigned int get_fifosize_nvidia(struct amba_device *dev)
+{
+ return 32;
+}
+
+static struct vendor_data vendor_nvidia = {
+ .reg_offset = pl011_std_offsets,
+ .ifls = UART011_IFLS_RX4_8 | UART011_IFLS_TX4_8,
+ .fr_busy = UART01x_FR_BUSY,
+ .fr_dsr = UART01x_FR_DSR,
+ .fr_cts = UART01x_FR_CTS,
+ .fr_ri = UART011_FR_RI,
+ .oversampling = false,
+ .dma_threshold = false,
+ .cts_event_workaround = false,
+ .always_enabled = false,
+ .fixed_options = false,
+ .skip_ibrd_fbrd = true,
+ .set_uartclk_rate = true,
+ .get_fifosize = get_fifosize_nvidia,
+};
+
/* Deals with DMA transactions */

struct pl011_dmabuf {
@@ -3115,6 +3137,11 @@ static const struct amba_id pl011_ids[] = {
.mask = 0x00ffffff,
.data = &vendor_st,
},
+ {
+ .id = 0x0006b011,
+ .mask = 0x000fffff,
+ .data = &vendor_nvidia,
+ },
{ 0, 0 },
};

--
2.43.0