Module Name:    src
Committed By:   mrg
Date:           Sun Mar 20 20:43:34 UTC 2011

Modified Files:
        src/sys/arch/sparc64/dev: schizo.c schizoreg.h

Log Message:
enable the tomatillo iocache.
garbage collect struct iommureg_schizo and use struct iommureg2.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/sparc64/dev/schizo.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/sparc64/dev/schizoreg.h

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/sparc64/dev/schizo.c
diff -u src/sys/arch/sparc64/dev/schizo.c:1.17 src/sys/arch/sparc64/dev/schizo.c:1.18
--- src/sys/arch/sparc64/dev/schizo.c:1.17	Sun Jan  2 10:43:18 2011
+++ src/sys/arch/sparc64/dev/schizo.c	Sun Mar 20 20:43:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: schizo.c,v 1.17 2011/01/02 10:43:18 mrg Exp $	*/
+/*	$NetBSD: schizo.c,v 1.18 2011/03/20 20:43:34 mrg Exp $	*/
 /*	$OpenBSD: schizo.c,v 1.55 2008/08/18 20:29:37 brad Exp $	*/
 
 /*
@@ -299,21 +299,20 @@
 	schizo_set_intr(sc, pbm, PIL_HIGH, schizo_safari_error, sc,
 	    SCZ_SERR_INO, "safari");
 
-#if 0
 	if (sc->sc_tomatillo) {
 		/*
-		 * We should enable the IOCACHE here.
+		 * Enable the IOCACHE.
 		 */
 		uint64_t iocache_csr;
-		char bits[128];
 
-		iocache_csr = schizo_pbm_read(pbm, SCZ_PCI_IOCACHE_CSR);
+		iocache_csr = TOM_IOCACHE_CSR_WRT_PEN |
+			      (1 << TOM_IOCACHE_CSR_POFFSET_SHIFT) |
+			      TOM_IOCACHE_CSR_PEN_RDM |
+			      TOM_IOCACHE_CSR_PEN_ONE |
+			      TOM_IOCACHE_CSR_PEN_LINE;
 
-		snprintb(bits, sizeof(bits), TOM_IOCACHE_CSR_BITS, iocache_csr);
-		printf("IOCACHE_CSR=%s\n", bits);
-		printf("IOCACHE_CSR=%" PRIx64 "\n", iocache_csr);
+		schizo_pbm_write(pbm, SCZ_PCI_IOCACHE_CSR, iocache_csr);
 	}
-#endif
 
 	config_found(&sc->sc_dv, &pba, schizo_print);
 }
@@ -424,7 +423,7 @@
 	is->is_bustag = pbm->sp_regt;
 	bus_space_subregion(is->is_bustag, pbm->sp_regh,
 		offsetof(struct schizo_pbm_regs, iommu),
-		sizeof(struct schizo_iommureg),
+		sizeof(struct iommureg2),
 		&is->is_iommu);
 
 	/*

Index: src/sys/arch/sparc64/dev/schizoreg.h
diff -u src/sys/arch/sparc64/dev/schizoreg.h:1.7 src/sys/arch/sparc64/dev/schizoreg.h:1.8
--- src/sys/arch/sparc64/dev/schizoreg.h:1.7	Sun Jan  2 10:43:18 2011
+++ src/sys/arch/sparc64/dev/schizoreg.h	Sun Mar 20 20:43:34 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: schizoreg.h,v 1.7 2011/01/02 10:43:18 mrg Exp $	*/
+/*	$NetBSD: schizoreg.h,v 1.8 2011/03/20 20:43:34 mrg Exp $	*/
 /*	$OpenBSD: schizoreg.h,v 1.20 2008/07/12 13:08:04 kettenis Exp $	*/
 
 /*
@@ -28,22 +28,9 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-/* XXX merge with iommureg.h */
-/* iommmu registers */
-struct schizo_iommureg {
-	volatile u_int64_t	iommu_cr;	/* IOMMU control register */
-	volatile u_int64_t	iommu_tsb;	/* IOMMU TSB base register */
-	volatile u_int64_t	iommu_flush;	/* IOMMU flush register */
-	volatile u_int64_t	iommu_ctxflush;
-	volatile u_int64_t	iommu_reserved[28];
-	volatile u_int64_t	iommu_cache_flush;
-	volatile u_int64_t	iommu_cache_invalidate;
-	volatile u_int64_t	iommu_reserved2[30];
-};
-
 struct schizo_pbm_regs {
 	volatile u_int64_t	_unused1[64];		/* 0x0000 - 0x01ff */
-	struct schizo_iommureg	iommu;			/* 0x0200 - 0x03ff */
+	struct iommureg2	iommu;			/* 0x0200 - 0x03ff */
 	volatile u_int64_t	_unused2[384];
 	volatile u_int64_t	imap[64];
 	volatile u_int64_t	_unused3[64];
@@ -260,6 +247,7 @@
 #define	TOM_IOCACHE_CSR_NCP_RDM		(1UL << 18UL)	/* memory read multiple (NC) */
 #define	TOM_IOCACHE_CSR_NCP_ONE		(1UL << 17UL)	/* memory read (NC) */
 #define	TOM_IOCACHE_CSR_NCP_LINE	(1UL << 16UL)	/* memory read line (NC) */
+#define	TOM_IOCACHE_CSR_POFFSET_SHIFT	(1UL << 3UL)	/* prefetch offset */
 #define	TOM_IOCACHE_CSR_PEN_RDM		(1UL << 2UL)	/* memory read multiple */
 #define	TOM_IOCACHE_CSR_PEN_ONE		(1UL << 1UL)	/* memory read */
 #define	TOM_IOCACHE_CSR_PEN_LINE	(1UL << 0UL)	/* memory read line */

Reply via email to