Module Name:    src
Committed By:   reinoud
Date:           Fri Sep 26 18:59:29 UTC 2014

Modified Files:
        src/sys/arch/evbarm/odroid: odroid_machdep.c odroid_start.S

Log Message:
Redo the magic of console selection


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/evbarm/odroid/odroid_machdep.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/evbarm/odroid/odroid_start.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/odroid/odroid_machdep.c
diff -u src/sys/arch/evbarm/odroid/odroid_machdep.c:1.35 src/sys/arch/evbarm/odroid/odroid_machdep.c:1.36
--- src/sys/arch/evbarm/odroid/odroid_machdep.c:1.35	Wed Sep 24 20:38:33 2014
+++ src/sys/arch/evbarm/odroid/odroid_machdep.c	Fri Sep 26 18:59:29 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: odroid_machdep.c,v 1.35 2014/09/24 20:38:33 reinoud Exp $ */
+/*	$NetBSD: odroid_machdep.c,v 1.36 2014/09/26 18:59:29 reinoud Exp $ */
 
 /*
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: odroid_machdep.c,v 1.35 2014/09/24 20:38:33 reinoud Exp $");
+__KERNEL_RCSID(0, "$NetBSD: odroid_machdep.c,v 1.36 2014/09/26 18:59:29 reinoud Exp $");
 
 #include "opt_evbarm_boardtype.h"
 #include "opt_exynos.h"
@@ -108,44 +108,9 @@ __KERNEL_RCSID(0, "$NetBSD: odroid_machd
 #include <arm/samsung/sscom_var.h>
 #include <arm/samsung/sscom_reg.h>
 
-static const struct sscom_uart_info exynos_uarts[] = {
-#ifdef EXYNOS5
-	{
-		.unit    = 0,
-		.iobase = EXYNOS5_UART0_OFFSET
-	},
-	{
-		.unit    = 1,
-		.iobase = EXYNOS5_UART1_OFFSET
-	},
-	{
-		.unit    = 2,
-		.iobase = EXYNOS5_UART2_OFFSET
-	},
-	{
-		.unit    = 3,
-		.iobase = EXYNOS5_UART3_OFFSET
-	},
-#endif
-#ifdef EXYNOS4
-	{
-		.unit    = 0,
-		.iobase = EXYNOS4_UART0_OFFSET
-	},
-	{
-		.unit    = 1,
-		.iobase = EXYNOS4_UART1_OFFSET
-	},
-	{
-		.unit    = 2,
-		.iobase = EXYNOS4_UART2_OFFSET
-	},
-	{
-		.unit    = 3,
-		.iobase = EXYNOS4_UART3_OFFSET
-	},
-#endif
-};
+extern const int num_exynos_uarts_entries;
+extern const struct sscom_uart_info exynos_uarts[];
+KASSERT(sizeof(struct sscom_uart_info) == 8);
 
 /* sanity checks for serial console */
 #ifndef CONSPEED
@@ -161,7 +126,7 @@ static const struct sscom_uart_info exyn
 //static const bus_addr_t conaddr = CONADDR;
 static const int conspeed = CONSPEED;
 static const int conmode = CONMODE;
-#endif /*defined(KGDB) || defined(SSCOM0CONSOLE) || defined(SSCOM1CONSOLE) */
+#endif /*defined(KGDB) || defined(SSCOM*CONSOLE) */
 
 /*
  * uboot passes 4 arguments to us.
@@ -458,12 +423,13 @@ consinit(void)
 	freq = (freq + conspeed / 2) / 1000;
 	freq *= 1000;
 
-	for (i = 0; i < __arraycount(exynos_uarts); i++) {
+	/* go trough all entries */
+	for (i = 0; i < num_exynos_uarts_entries; i++) {
 		/* attach console */
 		if (exynos_uarts[i].iobase + EXYNOS_CORE_PBASE == iobase)
 			break;
 	}
-	KASSERT(i < __arraycount(exynos_uarts));
+	KASSERT(i < num_exynos_uarts_entries);
 	printf("%s: attaching console @ %#"PRIxPTR" (%u HZ, %u bps)\n",
 	    __func__, iobase, freq, conspeed);
 	if (sscom_cnattach(bst, exynos_core_bsh, &exynos_uarts[i],

Index: src/sys/arch/evbarm/odroid/odroid_start.S
diff -u src/sys/arch/evbarm/odroid/odroid_start.S:1.4 src/sys/arch/evbarm/odroid/odroid_start.S:1.5
--- src/sys/arch/evbarm/odroid/odroid_start.S:1.4	Fri Sep 26 18:26:24 2014
+++ src/sys/arch/evbarm/odroid/odroid_start.S	Fri Sep 26 18:59:29 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: odroid_start.S,v 1.4 2014/09/26 18:26:24 reinoud Exp $	*/
+/*	$NetBSD: odroid_start.S,v 1.5 2014/09/26 18:59:29 reinoud Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
 
 #include <evbarm/odroid/platform.h>
 
-RCSID("$NetBSD: odroid_start.S,v 1.4 2014/09/26 18:26:24 reinoud Exp $")
+RCSID("$NetBSD: odroid_start.S,v 1.5 2014/09/26 18:59:29 reinoud Exp $")
 
 
 #if defined(VERBOSE_INIT_ARM)
@@ -186,10 +186,16 @@ _C_LABEL(odroid_start):
 	adr	r1, .Lsscom_exynos5_table
 #endif
 #ifdef SSCOM0CONSOLE
-	ldr	r2, [r1, #0]
+	ldr	r2, [r1, #0*8+4]
 #endif
 #ifdef SSCOM1CONSOLE
-	ldr	r2, [r1, #4]
+	ldr	r2, [r1, #1*8+4]
+#endif
+#ifdef SSCOM2CONSOLE
+	ldr	r2, [r1, #2*8+4]
+#endif
+#ifdef SSCOM3CONSOLE
+	ldr	r2, [r1, #3*8+4]
 #endif
 	add	r2, r2, #EXYNOS_CORE_PBASE
 	mcr	p15, 0, r2, c13, c0, 3		// TPIDRURO set (uart address)
@@ -244,17 +250,30 @@ _C_LABEL(odroid_start):
 
 	/* NOTREACHED */
 
-
+	.align 0
+	.global _C_LABEL(num_exynos_uarts_entries)
+_C_LABEL(num_exynos_uarts_entries):
+	.word	8				// update number of entries!!!
+	.global _C_LABEL(exynos_uarts)
+_C_LABEL(exynos_uarts):
 .Lsscom_exynos4_table:
+	.word	0
 	.word	EXYNOS4_UART0_OFFSET
+	.word	1
 	.word	EXYNOS4_UART1_OFFSET
+	.word	2
 	.word	EXYNOS4_UART2_OFFSET
+	.word	3
 	.word	EXYNOS4_UART3_OFFSET
 
 .Lsscom_exynos5_table:
+	.word	0
 	.word	EXYNOS5_UART0_OFFSET
+	.word	1
 	.word	EXYNOS5_UART1_OFFSET
+	.word	2
 	.word	EXYNOS5_UART2_OFFSET
+	.word	3
 	.word	EXYNOS5_UART3_OFFSET
 
 

Reply via email to