svn commit: r310781 - head/sys/mips/atheros

Adrian Chadd adrian at FreeBSD.org
Thu Dec 29 17:31:39 UTC 2016


Author: adrian
Date: Thu Dec 29 17:31:38 2016
New Revision: 310781
URL: https://svnweb.freebsd.org/changeset/base/310781

Log:
  [ar71xx] add EARLY_PRINTF support for the AR933x (Hornet) UART.
  
  Tested:
  
  * Carambola 2

Modified:
  head/sys/mips/atheros/uart_bus_ar933x.c

Modified: head/sys/mips/atheros/uart_bus_ar933x.c
==============================================================================
--- head/sys/mips/atheros/uart_bus_ar933x.c	Thu Dec 29 17:31:07 2016	(r310780)
+++ head/sys/mips/atheros/uart_bus_ar933x.c	Thu Dec 29 17:31:38 2016	(r310781)
@@ -44,6 +44,9 @@ __FBSDID("$FreeBSD$");
 #include <mips/atheros/ar71xx_cpudef.h>
 
 #include <mips/atheros/uart_dev_ar933x.h>
+#ifdef	EARLY_PRINTF
+#include <mips/atheros/ar933x_uart.h>
+#endif
 
 #include "uart_if.h"
 
@@ -88,4 +91,25 @@ uart_ar933x_probe(device_t dev)
 	return (uart_bus_probe(dev, 2, freq, 0, 0));
 }
 
+/*
+ * Assume the UART is setup by the bootloader and just echo that.
+ */
+#if	defined(EARLY_PRINTF)
+static void
+ar933x_early_putc(int c)
+{
+	int i = 1000;
+
+	/* Wait until FIFO is clear */
+	while ((i > 0) && (ATH_READ_REG(AR71XX_UART_ADDR + AR933X_UART_CS_REG) &
+	     AR933X_UART_CS_TX_BUSY))
+		i--;
+
+	/* Write it out */
+	ATH_WRITE_REG(AR71XX_UART_ADDR + AR933X_UART_DATA_REG,
+	    (c  & 0xff)| AR933X_UART_DATA_TX_CSR);
+}
+early_putc_t *early_putc = ar933x_early_putc;
+#endif	/* EARLY_PRINTF */
+
 DRIVER_MODULE(uart, apb, uart_ar933x_driver, uart_devclass, 0, 0);


More information about the svn-src-head mailing list