Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Oct 2017 20:56:30 +0000 (UTC)
From:      Emmanuel Vadot <manu@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r324773 - head/sys/arm/allwinner
Message-ID:  <201710192056.v9JKuUpQ050752@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: manu
Date: Thu Oct 19 20:56:30 2017
New Revision: 324773
URL: https://svnweb.freebsd.org/changeset/base/324773

Log:
  Allwinner: Add EARLY_PRINTF function
  
  EARLY_PRINTF can help debugging early problems.
  Add it for Allwinner SoCs.
  
  Tested On: OrangePi One (H3)

Modified:
  head/sys/arm/allwinner/aw_machdep.c

Modified: head/sys/arm/allwinner/aw_machdep.c
==============================================================================
--- head/sys/arm/allwinner/aw_machdep.c	Thu Oct 19 20:54:55 2017	(r324772)
+++ head/sys/arm/allwinner/aw_machdep.c	Thu Oct 19 20:56:30 2017	(r324773)
@@ -164,6 +164,29 @@ allwinner_cpu_reset(platform_t plat)
 	while (1);
 }
 
+/*
+ * To use early printf on Allwinner SoC, add to kernel config
+ * options SOCDEV_PA=0x01C00000
+ * options SOCDEV_VA=0x10000000
+ * options EARLY_PRINTF
+ * And remove the if 0
+*/
+#if 0
+#ifdef EARLY_PRINTF
+static void
+allwinner_early_putc(int c)
+{
+	volatile uint32_t * UART_STAT_REG = (uint32_t *)0x1002807C;
+	volatile uint32_t * UART_TX_REG   = (uint32_t *)0x10028000;
+	const uint32_t      UART_TXRDY    = (1 << 2);
+
+	while ((*UART_STAT_REG & UART_TXRDY) == 0)
+		continue;
+	*UART_TX_REG = c;
+}
+early_putc_t *early_putc = allwinner_early_putc;
+#endif /* EARLY_PRINTF */
+
 #if defined(SOC_ALLWINNER_A10)
 static platform_method_t a10_methods[] = {
 	PLATFORMMETHOD(platform_attach,         a10_attach),



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