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: