aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/uart
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2024-10-14 21:57:09 +0000
committerWarner Losh <imp@FreeBSD.org>2024-10-14 22:03:58 +0000
commitfa93443af9fb05989dc069ea37932be1b760e7f3 (patch)
treeaf4d50dc373599e9aae9ef7bcbc3dcdd6fb482fa /sys/dev/uart
parent2bdd404abe2cdf9f52ddc45202afbde637f97292 (diff)
Diffstat (limited to 'sys/dev/uart')
-rw-r--r--sys/dev/uart/uart_core.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/uart/uart_core.c b/sys/dev/uart/uart_core.c
index c2bc818a6fc2..71f39e4c71e7 100644
--- a/sys/dev/uart/uart_core.c
+++ b/sys/dev/uart/uart_core.c
@@ -559,8 +559,14 @@ uart_bus_probe(device_t dev, int regshft, int regiowidth, int rclk, int rid, int
uart_cpu_eqres(&sc->sc_bas, &sysdev->bas)) {
/* XXX check if ops matches class. */
sc->sc_sysdev = sysdev;
- sysdev->bas.rclk = sc->sc_bas.rclk;
- }
+ if (sysdev->bas.rclk != 0) {
+ /* Let the boot sequence control */
+ sc->sc_bas.rclk = sysdev->bas.rclk;
+ } else {
+ /* Boot didn't set it, use use class */
+ sysdev->bas.rclk = sc->sc_bas.rclk;
+ }
+ }
}
error = UART_PROBE(sc);