Module Name:    src
Committed By:   matt
Date:           Fri Sep  7 11:53:50 UTC 2012

Modified Files:
        src/sys/arch/evbarm/bcm53xx: bcm53xx_machdep.c bcm53xx_start.S
            genassym.cf platform.h

Log Message:
Include PCI outbound windows in the kernel IO region.  Make sure these start
on a SuperSection boundary.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/evbarm/bcm53xx/bcm53xx_machdep.c \
    src/sys/arch/evbarm/bcm53xx/genassym.cf \
    src/sys/arch/evbarm/bcm53xx/platform.h
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbarm/bcm53xx/bcm53xx_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/bcm53xx/bcm53xx_machdep.c
diff -u src/sys/arch/evbarm/bcm53xx/bcm53xx_machdep.c:1.1 src/sys/arch/evbarm/bcm53xx/bcm53xx_machdep.c:1.2
--- src/sys/arch/evbarm/bcm53xx/bcm53xx_machdep.c:1.1	Sat Sep  1 00:15:11 2012
+++ src/sys/arch/evbarm/bcm53xx/bcm53xx_machdep.c	Fri Sep  7 11:53:49 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm53xx_machdep.c,v 1.1 2012/09/01 00:15:11 matt Exp $	*/
+/*	$NetBSD: bcm53xx_machdep.c,v 1.2 2012/09/07 11:53:49 matt Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -33,12 +33,13 @@
 #define IDM_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm53xx_machdep.c,v 1.1 2012/09/01 00:15:11 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm53xx_machdep.c,v 1.2 2012/09/07 11:53:49 matt Exp $");
 
 #include "opt_evbarm_boardtype.h"
 #include "opt_broadcom.h"
 #include "opt_kgdb.h"
 #include "com.h"
+#include "pci.h"
 #include "bcmrng_ccb.h"
 
 #include <sys/param.h>
@@ -130,19 +131,42 @@ int comcnmode = CONMODE | CLOCAL;
 
 static const struct pmap_devmap devmap[] = {
 	{
-		KERNEL_IO_VBASE,
+		KERNEL_IO_IOREG_VBASE,
 		BCM53XX_IOREG_PBASE,		/* 0x18000000 */
 		BCM53XX_IOREG_SIZE,		/* 2MB */
 		VM_PROT_READ|VM_PROT_WRITE,
 		PTE_NOCACHE,
 	},
 	{
-		KERNEL_IO_VBASE + BCM53XX_IOREG_SIZE,
+		KERNEL_IO_ARMCORE_VBASE,
 		BCM53XX_ARMCORE_PBASE,		/* 0x19000000 */
-		BCM53XX_ARMCORE_SIZE,		/* 16MB */
+		BCM53XX_ARMCORE_SIZE,		/* 1MB */
 		VM_PROT_READ|VM_PROT_WRITE,
 		PTE_NOCACHE,
 	},
+#if NPCI > 0
+	{
+		KERNEL_IO_PCIE0_OWIN_VBASE,
+		BCM53XX_PCIE0_OWIN_PBASE,	/* 0x08000000 */
+		BCM53XX_PCIE0_OWIN_SIZE,	/* 4MB */
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+	{
+		KERNEL_IO_PCIE1_OWIN_VBASE,
+		BCM53XX_PCIE1_OWIN_PBASE,	/* 0x40000000 */
+		BCM53XX_PCIE1_OWIN_SIZE,	/* 4MB */
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+	{
+		KERNEL_IO_PCIE2_OWIN_VBASE,
+		BCM53XX_PCIE2_OWIN_PBASE,	/* 0x48000000 */
+		BCM53XX_PCIE2_OWIN_SIZE,	/* 4MB */
+		VM_PROT_READ|VM_PROT_WRITE,
+		PTE_NOCACHE,
+	},
+#endif /* NPCI > 0 */
 	{ 0, 0, 0, 0, 0 }
 };
 
@@ -162,7 +186,7 @@ u_int
 initarm(void *arg)
 {
 	pmap_devmap_register(devmap);
-	bcm53xx_bootstrap(KERNEL_IO_VBASE);
+	bcm53xx_bootstrap(KERNEL_IO_IOREG_VBASE);
 
 #ifdef MULTIPROCESSOR
 	uint32_t scu_cfg = bus_space_read_4(bcm53xx_armcore_bst, bcm53xx_armcore_bsh,
Index: src/sys/arch/evbarm/bcm53xx/genassym.cf
diff -u src/sys/arch/evbarm/bcm53xx/genassym.cf:1.1 src/sys/arch/evbarm/bcm53xx/genassym.cf:1.2
--- src/sys/arch/evbarm/bcm53xx/genassym.cf:1.1	Sat Sep  1 00:15:11 2012
+++ src/sys/arch/evbarm/bcm53xx/genassym.cf	Fri Sep  7 11:53:50 2012
@@ -1,4 +1,4 @@
-# $NetBSD: genassym.cf,v 1.1 2012/09/01 00:15:11 matt Exp $
+# $NetBSD: genassym.cf,v 1.2 2012/09/07 11:53:50 matt Exp $
 
 #-
 # Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -38,8 +38,8 @@ define	BCM53XX_IOREG_PBASE	BCM53XX_IOREG
 define	BCM53XX_IOREG_SIZE	BCM53XX_IOREG_SIZE
 define	BCM53XX_ARMCORE_PBASE	BCM53XX_ARMCORE_PBASE
 define	BCM53XX_ARMCORE_SIZE	BCM53XX_ARMCORE_SIZE
-define	KERNEL_IO_VBASE		KERNEL_IO_VBASE
-define	KERNEL_IO_VSIZE		KERNEL_IO_VSIZE
+define	KERNEL_IO_IOREG_VBASE	KERNEL_IO_IOREG_VBASE
+define	KERNEL_IO_ARMCORE_VBASE	KERNEL_IO_ARMCORE_VBASE
 
 define	LSR_TXRDY		LSR_TXRDY
 define	LSR_TSRE		LSR_TSRE
Index: src/sys/arch/evbarm/bcm53xx/platform.h
diff -u src/sys/arch/evbarm/bcm53xx/platform.h:1.1 src/sys/arch/evbarm/bcm53xx/platform.h:1.2
--- src/sys/arch/evbarm/bcm53xx/platform.h:1.1	Sat Sep  1 00:15:11 2012
+++ src/sys/arch/evbarm/bcm53xx/platform.h	Fri Sep  7 11:53:50 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: platform.h,v 1.1 2012/09/01 00:15:11 matt Exp $	*/
+/*	$NetBSD: platform.h,v 1.2 2012/09/07 11:53:50 matt Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -39,7 +39,11 @@
  * Kernel VM space: KERNEL_VM_BASE to 0xc0000000.  Leave 1MB unused.
  */
 #define	KERNEL_VM_BASE		(KERNEL_BASE + 0x40000000)
-#define	KERNEL_VM_TOP		(0xfff00000 - KERNEL_IO_VSIZE)
+#if BCM53XX_IO_SIZE >= L1_SS_SIZE
+#define	KERNEL_VM_TOP		((0xfff00000 - BCM53XX_IO_SIZE) & -L1_SS_SIZE)
+#else
+#define	KERNEL_VM_TOP		(0xfff00000 - BCM53XX_IO_SIZE)
+#endif
 #define	KERNEL_VM_SIZE		(KERNEL_VM_TOP - KERNEL_VM_BASE)
 
 /*
@@ -47,8 +51,14 @@
  * address space, so we can't map 1:1 VA:PA.  So shove them just after the
  * top of the kernel VM.
  */
-#define	KERNEL_IO_VBASE		KERNEL_VM_TOP
-#define	KERNEL_IO_PBASE		BCM53XX_IOREG_PBASE
-#define	KERNEL_IO_VSIZE		BCM53XX_IO_SIZE
+
+#define	KERNEL_IO_VBASE			KERNEL_VM_TOP
+
+#define	KERNEL_IO_PCIE0_OWIN_VBASE	KERNEL_IO_VBASE
+#define	KERNEL_IO_PCIE1_OWIN_VBASE	(KERNEL_IO_PCIE0_OWIN_VBASE + BCM53XX_PCIE0_OWIN_SIZE)
+#define	KERNEL_IO_PCIE2_OWIN_VBASE	(KERNEL_IO_PCIE1_OWIN_VBASE + BCM53XX_PCIE1_OWIN_SIZE)
+#define	KERNEL_IO_IOREG_VBASE		(KERNEL_IO_PCIE2_OWIN_VBASE + BCM53XX_PCIE2_OWIN_SIZE)
+#define	KERNEL_IO_ARMCORE_VBASE		(KERNEL_IO_IOREG_VBASE + BCM53XX_IOREG_SIZE)
+#define	KERNEL_IO_END_VBASE		(KERNEL_IO_ARMCORE_VBASE + BCM53XX_ARMCORE_SIZE)
 
 #endif	/* _EVBARM_BCM53XX_PLATFORM_H */

Index: src/sys/arch/evbarm/bcm53xx/bcm53xx_start.S
diff -u src/sys/arch/evbarm/bcm53xx/bcm53xx_start.S:1.2 src/sys/arch/evbarm/bcm53xx/bcm53xx_start.S:1.3
--- src/sys/arch/evbarm/bcm53xx/bcm53xx_start.S:1.2	Sun Sep  2 05:02:36 2012
+++ src/sys/arch/evbarm/bcm53xx/bcm53xx_start.S	Fri Sep  7 11:53:50 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm53xx_start.S,v 1.2 2012/09/02 05:02:36 matt Exp $	*/
+/*	$NetBSD: bcm53xx_start.S,v 1.3 2012/09/07 11:53:50 matt Exp $	*/
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -45,7 +45,7 @@
 #define	CONADDR		0x18000300
 #endif
 
-RCSID("$NetBSD: bcm53xx_start.S,v 1.2 2012/09/02 05:02:36 matt Exp $")
+RCSID("$NetBSD: bcm53xx_start.S,v 1.3 2012/09/07 11:53:50 matt Exp $")
 
 #undef VERBOSE_INIT_ARM
 #define VERBOSE_INIT_ARM
@@ -151,7 +151,7 @@ mmu_init_table:
 	    L1_S_PROTO | L1_S_APv7_KRW  | L1_S_B | L1_S_C)
 
 	/* Map the 2MB of primary peripherals */
-	MMU_INIT(KERNEL_IO_VBASE, BCM53XX_IOREG_PBASE,
+	MMU_INIT(KERNEL_IO_IOREG_VBASE, BCM53XX_IOREG_PBASE,
 	    (BCM53XX_IOREG_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,
 	    L1_S_PROTO | L1_S_APv7_KRW)
 
@@ -161,8 +161,7 @@ mmu_init_table:
 	    L1_S_PROTO | L1_S_APv7_KRW)
 
 	/* Map the 1MB of armcore peripherals */
-	MMU_INIT(KERNEL_IO_VBASE + BCM53XX_IOREG_SIZE,
-	    BCM53XX_ARMCORE_PBASE,
+	MMU_INIT(KERNEL_IO_ARMCORE_VBASE, BCM53XX_ARMCORE_PBASE,
 	    (BCM53XX_ARMCORE_SIZE + L1_S_SIZE - 1) / L1_S_SIZE,
 	    L1_S_PROTO | L1_S_APv7_KRW)
 

Reply via email to