From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.167.178 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794280406; b=TOLIPGqPI2ZYcXEVxEKGuWkFSYhG6440qRPMB5wwY9smToPX/7HIs+rq3n/QNOypGtsa LOCsMfetkeqtUju6ogUlYLMkJa6/5BnNB72D3TGwe69BJy3wsrlLY98RKnLNeLjAHWClI IBOgVqKRD1dFPGxBnUg4u1prp8v57cQ9TCBNxAmVt4MtNiFVo81if04j0mkyVTdcXlB0P e23ngFyq7jF7afra+Va9e9EDXKaDPtZMjMSB3UwhEty+Xx2coVNyEpgbSiU2aC37OnaIP oT2W06y5ORPWRLuVRXp53impNEFBxW5WqbiiCpGybpRSsvVn2xPXQr6LEFUwD4Ffi6A== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794280406; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Gm-Message-State:X-Gm-Gg:X-Received:Received:From:Date:Subject: MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id: References:In-Reply-To:To:Cc:X-Mailer; bh=RD1jkN1QvH2Z5B6Q5iIjFx4HZtCXt5GvWjpjCwZzO7s=; b=ex1JPXDY3v15Fej1BPpiWXWkWjtxTy+IzDBfxC0ZIV/tda0L5Kc1lhfUmfdL9G/Wl79w H19am61NNmtPYyfWOvhstjRaYFZsjPTFoDthQhQJn4vqLTZRJFmgCrr9eUgL8DSKJT0WZ SSvFWDAlbrreZ/6qHA0StcSzBtd6j0Q4p6mr+mREsWuPYIIFw0uu6lPy1kDPG2naGVKFn 64qEwXcwHLZ5qKb7CrdJ4hQrwSwiLvyoWdBcFasbISf38GxS2nK3YSxbYVtBIdphLFhIm 8vAb5HyMOsrXxTTtCCOO8MiF6H6uZvqka3DjIdiRf11LfGqYU71bMbesAVHOhWh96Ow== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=nsHgNnaD; arc=none smtp.remote-ip=209.85.167.178 Received: from mail-oi1-f178.google.com (mail-oi1-f178.google.com [209.85.167.178]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 122CE60A5BD4 for ; Tue, 10 Nov 2026 03:13:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 122CE60A5BD4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20260707 header.b=nsHgNnaD Received: by mail-oi1-f178.google.com with SMTP id 5614622812f47-53656465d1dso736593b6e.2 for ; Mon, 09 Nov 2026 19:13:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1794280405; x=1794885205; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RD1jkN1QvH2Z5B6Q5iIjFx4HZtCXt5GvWjpjCwZzO7s=; b=nsHgNnaD2HOBw7xy3XK+XyVqyXJd8qQ5zML/Lw2bZM2GRcXMg9fmedY74R/2tFK3le 5wYelxRFo235aTFkzKSa/FRtfalRDF5R4meubBagm31YKAFt2FbnG/D9mps/JvBjttm+ AihKGxeBi5te0mqgZk4ksGDTmH1wJpNcLZ8KbuMb+EyrXFmg4Q1QUuwpNpRoUBza1imY 6ZjLI4znoJ2kp5LLvJh/+zhatpvJIud3xT8qnYI1YtNPEP2YwCOdoQ15CzeOpKSVH0re SEbQAdYz0VVyJhCDiPWb9oxzfXbaJDaS0ojda8IcmyNVL5J0fstmElKyLc0h3B1BitJ0 01qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794280405; x=1794885205; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=RD1jkN1QvH2Z5B6Q5iIjFx4HZtCXt5GvWjpjCwZzO7s=; b=XJZ6Ts/FBKkcS53n6XKEILTvWBqB1WQFFD9xcKP/mRsESdcG23bQQNMWiXY9tEfvyZ Hi196WY9GMCEP6e4cKiKxacCDmRdOqNqDFv07yqRdWanAU+jB+uq/8951doIytRzV2ip lVoZFAg8h0CGeK2898XDMf3abhuTBe/j1MF+OrGqPkHGE5W2ZobX0o/UoIQJmZTD4u3z JTyj3a7KzoxJdKLVekgIcQUDveAL67YEU38t/r0zubz0YOpBDVzaDsUuaYLA0tZIU/6X aXJWiNDvxrzyGRROCQ7Bh41pCFBKRmpfz7mAb9Dqjwxr7aeSif8K3td67o0FhAKKqmqo SgAA== X-Gm-Message-State: APuU4Z8BlhYnrV9Pe1eBJtvM2r4Jqe2E9xotXNp6hZWl7s6EoGMk7wtu xc65fyXaz9Wj3P1nBM3IIl6mbv/RPhVlfADRlW2kgVmoJAXcTv1gIX8+ X-Gm-Gg: AYBFou0kmgdtymp5EQXdYTVqM21Byo64/1olgdPtVxhCGgRFvzbYQAYToUmYcsZB7+L /oaBPUshCjl2tXPpfADKCxnkO4IzZoeUDxoIhkYiV1+NWF7+aJwEawzxcATFhhOTtEMe2Ld8cmr +WQN/htOf0Ed00F4FYR7LB996x0DnrGwxMDiF6+9fMhNCch5YycEEFk0ThFR/q7940e5N335uFj fMZj5ulbMlUlzzDBA8569PXFOJPQOoEEVUr42eiZ9t+7VBCNAnV24QYOUDC0XxeN7uBEIXFaTkl 6quXNp/ixjhYdQ2mYLq5sypTMZDB24Yiruo9+tPDIO7KUC1pLHZAmoDkaitdNq+3kCFnGUoVJjN XBd/2Dziyb39Q7aIc/JYr/wzVeijPiG3fPGl1RcCM6koWTStfdh/9qpNM4CEmE7RxfJW2bdUh5A Jje+09esGIrVUFa/nt4/sGBYugLH0m/8ci54sroo8ESxiWfH8jg+JqvHvViiA77OEuRnefeVRaN p0bT0WJMgY1RqMMbfySk6KyTyrwDBsw9c1MADtNwjZ+YPOf9VFndXOc28uSQyb/UZCj7xOz60Y/ w+JKPq3GaS8j/bdhzjzk1GqEJR8PSWe21BSe0lw9ztvmZ38ecTr9ZN41AtWWKTzptUIzGObXtnY 47s8EiawgaM5OqvIi53PY39iSg7oDeXqmUKvCguE//NoPjbmMxLlsBSQACk6jkNRm0APINKAUyB HygcqH/O1XKWzSDpEKs0LQkfzfk1j9/6cunMiWhsjiEfaGEcgoUg8O X-Received: by 2002:a05:6808:508e:b0:4d6:90f4:48ab with SMTP id 5614622812f47-5683cd1b07bmr1294602b6e.45.1794280405078; Mon, 09 Nov 2026 19:13:25 -0800 (PST) Received: from [127.0.1.1] (174-29-1-49.hlrn.qwest.net. [174.29.1.49]) by smtp.gmail.com with ESMTPSA id 5614622812f47-56905736b92sm1019236b6e.8.2026.11.09.19.13.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2026 19:13:24 -0800 (PST) From: James Hilliard Date: Mon, 09 Nov 2026 20:12:59 -0700 Subject: [PATCH v9 10/11] serial: 8250_dw: discover Allwinner A523 FIFO depths through FCC X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261109-submit-h616-uart-fifo-v1-v9-10-3f03961dae8a@gmail.com> References: <20261109-submit-h616-uart-fifo-v1-v9-0-3f03961dae8a@gmail.com> In-Reply-To: <20261109-submit-h616-uart-fifo-v1-v9-0-3f03961dae8a@gmail.com> To: Andy Shevchenko , =?utf-8?q?Ilpo_J=C3=A4rvinen?= , Greg Kroah-Hartman , Jiri Slaby , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland Cc: linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, James Hilliard X-Mailer: b4 0.15.2 The A523 UART integration, also used by A527 and T527, has 64-byte FIFOs on UART0 and 128-byte FIFOs on UART1 through UART7. Each controller reports its TX/RX FIFO depth in bits 31:8 of the FIFO Clock Control register at offset 0xf0. The field holds a byte count, not a logarithmic encoding. Read this field in the sunxi setup callback when platform data does not provide a fixed FIFO size. A fixed size takes precedence, so H616 retains its 256-byte configuration without accessing FCC. The probe has already enabled the clocks and deasserted reset before invoking the callback. Leave the FIFO clock-control bits untouched. Use the shared DesignWare trigger setup to validate the depth and build the FIFO-relative threshold table. Invalid depths fail probe before registration instead of producing zero or truncated thresholds. The 8250 core derives the transmit load from the discovered depth. Select this setup for the A523 compatible. Like H616, this integration has Allwinner-specific debug-divisor and RS485 registers overlapping the generic DesignWare feature probes. Use the common sunxi PIO setup, BUSY-safe integer divisor programming and software RS485 handling. Keep the APB clock gate enabled during termios updates with SKIP_SET_RATE. Signed-off-by: James Hilliard --- drivers/tty/serial/8250/8250_dw.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c index a55f60330a51..257baab5a3ed 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -44,6 +44,10 @@ #define RZN1_UART_xDMACR_8_WORD_BURST (2 << 1) #define RZN1_UART_xDMACR_BLK_SZ(x) ((x) << 3) +/* Allwinner FIFO Clock Control register */ +#define SUNXI_UART_FCC 0xf0 +#define SUNXI_UART_FCC_FIFO_DEPTH GENMASK(31, 8) + /* Quirks */ #define DW_UART_QUIRK_OCTEON BIT(0) #define DW_UART_QUIRK_ARMADA_38X BIT(1) @@ -63,6 +67,7 @@ struct dw8250_platform_data { u8 usr_reg; u32 cpr_value; + /* Fixed FIFO depth; zero selects discovery during setup */ unsigned int fifo_size; unsigned int quirks; int (*setup)(struct uart_port *p); @@ -666,7 +671,15 @@ static int dw8250_sunxi_setup(struct uart_port *p) p->type = PORT_16550A; p->flags |= UPF_FIXED_TYPE; - p->fifosize = data->pdata->fifo_size; + + /* Apply given FIFO size or try to autodetect it */ + if (data->pdata->fifo_size) { + p->fifosize = data->pdata->fifo_size; + } else { + u32 fcc = dw8250_readl_ext(p, SUNXI_UART_FCC); + + p->fifosize = FIELD_GET(SUNXI_UART_FCC_FIFO_DEPTH, fcc); + } up->capabilities = UART_CAP_FIFO | UART_CAP_NOTEMT | UART_CAP_AFE; @@ -913,6 +926,12 @@ static const struct dw8250_platform_data dw8250_h616_data = { .setup = dw8250_sunxi_setup, }; +static const struct dw8250_platform_data dw8250_a523_data = { + .usr_reg = DW_UART_USR, + .quirks = DW_UART_QUIRK_SKIP_SET_RATE, + .setup = dw8250_sunxi_setup, +}; + static const struct dw8250_platform_data dw8250_octeon_3860_data = { .usr_reg = OCTEON_UART_USR, .quirks = DW_UART_QUIRK_OCTEON, @@ -965,6 +984,7 @@ static const struct dw8250_platform_data dw8250_tda54 = { static const struct of_device_id dw8250_of_match[] = { { .compatible = "snps,dw-apb-uart", .data = &dw8250_dw_apb }, { .compatible = "allwinner,sun50i-h616-uart", .data = &dw8250_h616_data }, + { .compatible = "allwinner,sun55i-a523-uart", .data = &dw8250_a523_data }, { .compatible = "cavium,octeon-3860-uart", .data = &dw8250_octeon_3860_data }, { .compatible = "marvell,armada-38x-uart", .data = &dw8250_armada_38x_data }, { .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data }, -- 2.53.0