Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Jun 2020 12:53:22 +0000 (UTC)
From:      Michal Meloun <mmel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r362053 - head/sys/arm/nvidia
Message-ID:  <202006111253.05BCrMn7055682@repo.freebsd.org>

index | next in thread | raw e-mail

Author: mmel
Date: Thu Jun 11 12:53:22 2020
New Revision: 362053
URL: https://svnweb.freebsd.org/changeset/base/362053

Log:
  Fix grabbing of tegra uart.
  An attempt to write to FCR register may corrupt transmit FIFO,
  so we should wait for the FIFO to be empty before we can modify it.
  
  MFC after:	1 week

Modified:
  head/sys/arm/nvidia/tegra_uart.c

Modified: head/sys/arm/nvidia/tegra_uart.c
==============================================================================
--- head/sys/arm/nvidia/tegra_uart.c	Thu Jun 11 12:35:00 2020	(r362052)
+++ head/sys/arm/nvidia/tegra_uart.c	Thu Jun 11 12:53:22 2020	(r362053)
@@ -102,6 +102,10 @@ tegra_uart_grab(struct uart_softc *sc)
 	uart_lock(sc->sc_hwmtx);
 	ier = uart_getreg(bas, REG_IER);
 	uart_setreg(bas, REG_IER, ier & ns8250->ier_mask);
+
+	while ((uart_getreg(bas, REG_LSR) & LSR_TEMT) == 0)
+		;
+
 	uart_setreg(bas, REG_FCR, 0);
 	uart_barrier(bas);
 	uart_unlock(sc->sc_hwmtx);


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202006111253.05BCrMn7055682>