Module Name:    src
Committed By:   cliff
Date:           Mon Mar 29 23:35:25 UTC 2010

Modified Files:
        src/sys/arch/mips/rmi [matt-nb5-mips64]: rmixl_intr.c

Log Message:
- add IRT-based interrupt names for XLR
- rmixl_intr_string() calls chip-type-specific functions
to get appropriate names table


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.15 -r1.1.2.16 src/sys/arch/mips/rmi/rmixl_intr.c

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/mips/rmi/rmixl_intr.c
diff -u src/sys/arch/mips/rmi/rmixl_intr.c:1.1.2.15 src/sys/arch/mips/rmi/rmixl_intr.c:1.1.2.16
--- src/sys/arch/mips/rmi/rmixl_intr.c:1.1.2.15	Sun Mar 21 21:25:30 2010
+++ src/sys/arch/mips/rmi/rmixl_intr.c	Mon Mar 29 23:35:24 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rmixl_intr.c,v 1.1.2.15 2010/03/21 21:25:30 cliff Exp $	*/
+/*	$NetBSD: rmixl_intr.c,v 1.1.2.16 2010/03/29 23:35:24 cliff Exp $	*/
 
 /*-
  * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko.
@@ -64,7 +64,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rmixl_intr.c,v 1.1.2.15 2010/03/21 21:25:30 cliff Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rmixl_intr.c,v 1.1.2.16 2010/03/29 23:35:24 cliff Exp $");
 
 #include "opt_ddb.h"
 #define	__INTR_PRIVATE
@@ -120,6 +120,45 @@
  */
 
 /*
+ * rmixl_irtnames_xlrxxx
+ * - use for XLRxxx
+ */
+static const char * const rmixl_irtnames_xlrxxx[NIRTS] = {
+	"int 0 (watchdog)",	/*  0 */
+	"int 1 (timer0)",	/*  1 */
+	"int 2 (timer1)",	/*  2 */
+	"int 3 (timer2)",	/*  3 */
+	"int 4 (timer3)",	/*  4 */
+	"int 5 (timer4)",	/*  5 */
+	"int 6 (timer5)",	/*  6 */
+	"int 7 (timer6)",	/*  7 */
+	"int 8 (timer7)",	/*  8 */
+	"int 9 (uart0)",	/*  9 */
+	"int 10 (uart1)",	/* 10 */
+	"int 11 (i2c0)",	/* 11 */
+	"int 12 (i2c1)",	/* 12 */
+	"int 13 (pcmcia)",	/* 13 */
+	"int 14 (gpio)",	/* 14 */
+	"int 15 (hyper)",	/* 15 */
+	"int 16 (pcix)",	/* 16 */
+	"int 17 (gmac0)",	/* 17 */
+	"int 18 (gmac1)",	/* 18 */
+	"int 19 (gmac2)",	/* 19 */
+	"int 20 (gmac3)",	/* 20 */
+	"int 21 (xgs0)",	/* 21 */
+	"int 22 (xgs1)",	/* 22 */
+	"int 23 (irq23)",	/* 23 */
+	"int 24 (hyper_fatal)",	/* 24 */
+	"int 25 (bridge_aerr)",	/* 25 */
+	"int 26 (bridge_berr)",	/* 26 */
+	"int 27 (bridge_tb)",	/* 27 */
+	"int 28 (bridge_nmi)",	/* 28 */
+	"int 29 (bridge_sram_derr)",	/* 29 */
+	"int 30 (gpio_fatal)",	/* 30 */
+	"int 31 (reserved)",	/* 31 */
+};
+
+/*
  * rmixl_irtnames_xls1xx
  * - use for XLS1xx, XLS2xx, XLS4xx-Lite
  */
@@ -282,6 +321,9 @@
 #endif
 
 
+static const char *rmixl_intr_string_xlr(int);
+static const char *rmixl_intr_string_xls(int);
+static uint32_t rmixl_irt_thread_mask(int);
 static void rmixl_irt_init(int);
 static void rmixl_irt_disestablish(int);
 static void rmixl_irt_establish(int, int,
@@ -329,7 +371,8 @@
 {
 	uint32_t r;
 
-	KASSERT(cpu_rmixls(mips_options.mips_cpu));
+	KASSERT(cpu_rmixlr(mips_options.mips_cpu)
+	     || cpu_rmixls(mips_options.mips_cpu));
 
 #ifdef IOINTR_DEBUG
 	printf("IPL_NONE=%d, mask %#"PRIx64"\n",
@@ -440,8 +483,6 @@
 const char *
 rmixl_intr_string(int irq)
 {
-	const char *name;
-
 	if (irq < 0 || irq >= NINTRVECS)
 		panic("%s: irq index %d out of range, max %d",
 			__func__, irq, NIRTS - 1);
@@ -449,6 +490,29 @@
 	if (irq >= NIRTS)
 		return rmixl_vecnames_common[irq];
 
+	switch(cpu_rmixl_chip_type(mips_options.mips_cpu)) {
+	case CIDFL_RMI_TYPE_XLR:
+		return rmixl_intr_string_xlr(irq);
+	case CIDFL_RMI_TYPE_XLS:
+		return rmixl_intr_string_xls(irq);
+	case CIDFL_RMI_TYPE_XLP:
+		panic("%s: RMI XLP not yet supported", __func__);
+	}
+
+	return "undefined";	/* appease gcc */
+}
+
+static const char *
+rmixl_intr_string_xlr(int irq)
+{
+	return rmixl_irtnames_xlrxxx[irq];
+}
+
+static const char *
+rmixl_intr_string_xls(int irq)
+{
+	const char *name;
+
 	switch (MIPS_PRID_IMPL(mips_options.mips_cpu_id)) {
 	case MIPS_XLS104:
 	case MIPS_XLS108:

Reply via email to