From nobody Fri Oct 31 15:30:14 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cylKf2VrTz6Fylq; Fri, 31 Oct 2025 15:30:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cylKf1ytFz3c1r; Fri, 31 Oct 2025 15:30:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761924614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oFJtT+KFOkcYOaEtrPPSIn1FEsYxPqPbupM1NKZGGQ4=; b=NFajpYAqiFOpcm2B3A/Exfre6bgKyDD98eM5a9JwU1TNgG9aKGcOtWTt11rmNOm4J/+y9U 3nnnWOKJ7MPe7gbfvW1zL7hA+DCXkW0DxDwVxNrSp730vp8Dj70EGW2E+X5FpNNx1B9p3U 0RcMG5gQbBpgCCIkKyF1czgZwOPqvwzhcngZloiqLdyM4PKiiH+3SaOp2aifgduGdoPtSg sQ0F0Am0CC6RJxcgPdaKm9Ot1ATpyYf5WGpZNz8JaGbZyMc81vxERz8MP7AX4aEp1Un40h UHUvod0eeVOoMvGHZbNjrrGiCanxxJOml6rDSll4e81eYONyutxNMurp0+Zd5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1761924614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oFJtT+KFOkcYOaEtrPPSIn1FEsYxPqPbupM1NKZGGQ4=; b=BBjbAlS9Gw3Le+0vryHw9dJ2z88YUZjEmrOPUf3fzEiLeVZDiRAvnAfgrbwFhvzJQ8g3R2 wRUSapdttF8+Titn7kHPshG5P8XCTzbKeIiZ1QzI+X15RMZ6f2iKbZZ/AlV6DCfoF6bfhV QHbRPinSENMUFB9IVNE8BAkkrI39pet3vgICFUv8zed2wNhpv8I/iMgLRlj3srrR16udFf xXq9Lhz+Acpvcdg0+Tt5FR2i8dWFJyHMHipiPQchDHpfg2b2Z2F9g+vwDGFN1lTdzCrXQo BtdswFWFNEM5m8k2pVE+SuoXJg1yvgJy6DX7nXpW7xnyq3oWRromZRfS55GYTg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1761924614; a=rsa-sha256; cv=none; b=YKQoLJ5F79vjL6A7tRZ+qsR31B8WDMWZzjNnU6TIme82DX6BUY45zaU1nDLftEq5/ij4J7 ktHgHUgPE8LlXr3whumcaDQ66xVJePyzoG4I8YhntdWBJcdGxsWMQCz9jmVUerObckzC1v rLio20OY34wi21WvMRLW9CIgrni8XXAR83RTWEa274FV0yxUy2vfACjoxRhUqm/B9xshZW alQPeLMuhFZ4p+eGJ16Jkl5zqv3TracrRh0WzAsxb94GbBWTEgN1uefr0TMsqglVhOIloU 3oDsc74h7T9WqkNzooymfi+SQuazN/gVpTBl++tGqsre/KRH0Zs1ZlFHBzIk5w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cylKf1HWFz1Crd; Fri, 31 Oct 2025 15:30:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 59VFUEqA051978; Fri, 31 Oct 2025 15:30:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 59VFUEYU051969; Fri, 31 Oct 2025 15:30:14 GMT (envelope-from git) Date: Fri, 31 Oct 2025 15:30:14 GMT Message-Id: <202510311530.59VFUEYU051969@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 6de1c50e78a8 - main - uart: provide and use default rclk for JH7110 UART List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6de1c50e78a826abc08660e4c3ac10f1ddba9ba2 Auto-Submitted: auto-generated The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=6de1c50e78a826abc08660e4c3ac10f1ddba9ba2 commit 6de1c50e78a826abc08660e4c3ac10f1ddba9ba2 Author: Mitchell Horne AuthorDate: 2025-10-14 18:02:40 +0000 Commit: Mitchell Horne CommitDate: 2025-10-31 15:30:02 +0000 uart: provide and use default rclk for JH7110 UART A regression in the u-boot-provided JH7110 device tree leaves the uart incorrectly configured. The issue arises when a baud rate is specified ('current-speed' property), but the rclk value is not ('clock-frequency'). Previous releases, e.g. v2025.04, provided both. The alternative way to retrieve this value is to query the parent clock, but our clk framework is not available during early console probing and configuration. In this instance, we end up defaulting to DEFAULT_RCLK in ns8250_init(), which is the wrong value. The relevant uart class (uart_snps) should provide a default rclk in its definition, but it does not. Add a new variant class with the correct default rclk of 24000000. Finally, uart_cpu_fdt_probe() needs to be updated to actually query this default value when it does not find a 'clock-frequency' property. This was simply missing; the ACPI uart bus behaves identically, see uart_acpi_probe(). PR: 289978 Reported by: rdunkle@smallcatbrain.com MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D53119 --- sys/dev/uart/uart_bus_fdt.c | 6 ++++++ sys/dev/uart/uart_dev_snps.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/sys/dev/uart/uart_bus_fdt.c b/sys/dev/uart/uart_bus_fdt.c index 431f2962adb2..e9a7e04e4e0c 100644 --- a/sys/dev/uart/uart_bus_fdt.c +++ b/sys/dev/uart/uart_bus_fdt.c @@ -238,6 +238,12 @@ uart_cpu_fdt_probe(struct uart_class **classp, bus_space_tag_t *bst, clk = 0; } + /* + * Grab the default rclk from the uart class. + */ + if (clk == 0) + clk = class->uc_rclk; + /* * Retrieve serial attributes. */ diff --git a/sys/dev/uart/uart_dev_snps.c b/sys/dev/uart/uart_dev_snps.c index 6067920e3c2a..0372a220282b 100644 --- a/sys/dev/uart/uart_dev_snps.c +++ b/sys/dev/uart/uart_dev_snps.c @@ -113,7 +113,17 @@ struct uart_class uart_snps_class = { .uc_rclk = 0, }; +struct uart_class uart_snps_jh7110_class = { + "snps", + snps_methods, + sizeof(struct snps_softc), + .uc_ops = &uart_ns8250_ops, + .uc_range = 8, + .uc_rclk = 24000000, +}; + static struct ofw_compat_data compat_data[] = { + { "starfive,jh7110-uart", (uintptr_t)&uart_snps_jh7110_class }, { "snps,dw-apb-uart", (uintptr_t)&uart_snps_class }, { "marvell,armada-38x-uart", (uintptr_t)&uart_snps_class }, { NULL, (uintptr_t)NULL }