You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(165) |
Sep
(240) |
Oct
(424) |
Nov
(526) |
Dec
(293) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(242) |
Feb
(149) |
Mar
(143) |
Apr
(143) |
May
(76) |
Jun
(59) |
Jul
(20) |
Aug
(2) |
Sep
(49) |
Oct
(1) |
Nov
(4) |
Dec
|
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(72) |
Jul
(36) |
Aug
(9) |
Sep
(16) |
Oct
(23) |
Nov
(9) |
Dec
(3) |
2010 |
Jan
|
Feb
(1) |
Mar
(35) |
Apr
(44) |
May
(56) |
Jun
(71) |
Jul
(41) |
Aug
(41) |
Sep
(22) |
Oct
(3) |
Nov
(1) |
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(25) |
Oct
(105) |
Nov
(15) |
Dec
|
2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Paul M. <le...@us...> - 2002-06-14 15:02:20
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4111/casio-e15 In directory usw-pr-cvs1:/tmp/cvs-serv20226/arch/mips/vr41xx/vr4111/casio-e15 Modified Files: setup.c Log Message: Kill off the need for platform specific vr41xx_board_irq_init(). Calling vr41xx_board_irq_init() will be a nop on platforms that don't specifically assign a value to board_irq_init. See eagle for an example. Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4111/casio-e15/setup.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- setup.c 13 Jun 2002 07:45:19 -0000 1.6 +++ setup.c 14 Jun 2002 15:02:15 -0000 1.7 @@ -51,11 +51,6 @@ struct semaphore vr41xx_dma_sem; - -void __init vr41xx_board_irq_init(void) -{ -} - #ifdef CONFIG_PM_SUSPEND_WAKEUP #include <asm/gdb-stub.h> |
From: Paul M. <le...@us...> - 2002-06-14 15:02:20
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/eagle In directory usw-pr-cvs1:/tmp/cvs-serv20226/arch/mips/vr41xx/vr4122/eagle Modified Files: irq.c setup.c Log Message: Kill off the need for platform specific vr41xx_board_irq_init(). Calling vr41xx_board_irq_init() will be a nop on platforms that don't specifically assign a value to board_irq_init. See eagle for an example. Index: irq.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/eagle/irq.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- irq.c 7 Mar 2002 03:16:54 -0000 1.1 +++ irq.c 14 Jun 2002 15:02:15 -0000 1.2 @@ -102,7 +102,7 @@ return -1; } -void __init vr41xx_board_irq_init(void) +void __init eagle_board_irq_init(void) { int i; Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4122/eagle/setup.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- setup.c 7 Mar 2002 03:16:54 -0000 1.1 +++ setup.c 14 Jun 2002 15:02:15 -0000 1.2 @@ -72,6 +72,8 @@ _machine_halt = vr41xx_halt; _machine_power_off = vr41xx_power_off; + board_irq_init = eagle_board_irq_init; + board_time_init = vr41xx_time_init; board_timer_setup = vr41xx_timer_setup; |
From: Paul M. <le...@us...> - 2002-06-14 15:02:20
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4131/casio-be300 In directory usw-pr-cvs1:/tmp/cvs-serv20226/arch/mips/vr41xx/vr4131/casio-be300 Modified Files: Makefile Removed Files: irq.c Log Message: Kill off the need for platform specific vr41xx_board_irq_init(). Calling vr41xx_board_irq_init() will be a nop on platforms that don't specifically assign a value to board_irq_init. See eagle for an example. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4131/casio-be300/Makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile 9 Mar 2002 07:47:19 -0000 1.2 +++ Makefile 14 Jun 2002 15:02:15 -0000 1.3 @@ -13,7 +13,7 @@ O_TARGET := casio-be300.o -obj-y := prom.o setup.o irq.o +obj-y := prom.o setup.o obj-$(CONFIG_PCI) += pci_fixup.o --- irq.c DELETED --- |
From: Paul M. <le...@us...> - 2002-06-14 15:02:19
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/common In directory usw-pr-cvs1:/tmp/cvs-serv20226/arch/mips/vr41xx/common Modified Files: Makefile Added Files: irq.c Log Message: Kill off the need for platform specific vr41xx_board_irq_init(). Calling vr41xx_board_irq_init() will be a nop on platforms that don't specifically assign a value to board_irq_init. See eagle for an example. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/common/Makefile,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Makefile 13 Jun 2002 12:57:33 -0000 1.7 +++ Makefile 14 Jun 2002 15:02:14 -0000 1.8 @@ -15,7 +15,7 @@ O_TARGET := vr41xx.o -obj-y := int-handler.o reset.o +obj-y := int-handler.o reset.o irq.o obj-$(CONFIG_VR41XX_TIME_C) += time.o |
From: Paul M. <le...@us...> - 2002-06-14 14:16:23
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey In directory usw-pr-cvs1:/tmp/cvs-serv3865 Modified Files: setup.c Log Message: Ack. Make sure we use reset functions that actually exist. Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey/setup.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- setup.c 14 Jun 2002 14:12:19 -0000 1.3 +++ setup.c 14 Jun 2002 14:16:21 -0000 1.4 @@ -43,9 +43,9 @@ conswitchp = &dummy_con; #endif - _machine_restart = nec_vr41xx_restart; - _machine_halt = nec_vr41xx_halt; - _machine_power_off = nec_vr41xx_power_off; + _machine_restart = vr41xx_restart; + _machine_halt = vr41xx_halt; + _machine_power_off = vr41xx_power_off; /* setup resource limit */ ioport_resource.end = 0xffffffff; |
From: Paul M. <le...@us...> - 2002-06-14 14:12:22
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey In directory usw-pr-cvs1:/tmp/cvs-serv2451 Modified Files: Makefile setup.c Added Files: irq.c Removed Files: reset.c Log Message: Use the generic reset routines. --- NEW FILE: irq.c --- /* * arch/mips/vr41xx/vr4181/osprey/irq.c * * Interrupt routines for the NEC Osprey * * Copyright (C) 2002 Paul Mundt <le...@ch...> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. */ #include <linux/init.h> void __init vr41xx_board_irq_init(void) { } Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 14 Jun 2002 13:55:59 -0000 1.1 +++ Makefile 14 Jun 2002 14:12:19 -0000 1.2 @@ -13,7 +13,7 @@ O_TARGET := osprey.o -obj-y := setup.o prom.o reset.o +obj-y := setup.o prom.o irq.o obj-$(CONFIG_REMOTE_DEBUG) += dbg_io.o Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey/setup.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- setup.c 14 Jun 2002 14:01:52 -0000 1.2 +++ setup.c 14 Jun 2002 14:12:19 -0000 1.3 @@ -21,14 +21,9 @@ #include <linux/init.h> #include <linux/delay.h> #include <asm/reboot.h> -#include <asm/vr4181/vr4181.h> +#include <asm/vr41xx.h> #include <asm/io.h> - -extern void nec_osprey_restart(char* c); -extern void nec_osprey_halt(void); -extern void nec_osprey_power_off(void); - extern void vr4181_init_serial(void); extern void vr4181_init_time(void); @@ -48,9 +43,9 @@ conswitchp = &dummy_con; #endif - _machine_restart = nec_osprey_restart; - _machine_halt = nec_osprey_halt; - _machine_power_off = nec_osprey_power_off; + _machine_restart = nec_vr41xx_restart; + _machine_halt = nec_vr41xx_halt; + _machine_power_off = nec_vr41xx_power_off; /* setup resource limit */ ioport_resource.end = 0xffffffff; --- reset.c DELETED --- |
From: Paul M. <le...@us...> - 2002-06-14 14:09:28
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common In directory usw-pr-cvs1:/tmp/cvs-serv1408 Modified Files: icu.c icu.h Log Message: Vr4111 -> Vr4181 ICU changes. Index: icu.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common/icu.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- icu.c 14 Jun 2002 14:06:46 -0000 1.1 +++ icu.c 14 Jun 2002 14:09:25 -0000 1.2 @@ -1,9 +1,9 @@ /* * FILE NAME - * arch/mips/vr41xx/vr4111/common/icu.c + * arch/mips/vr41xx/vr4181/common/icu.c * * BRIEF MODULE DESCRIPTION - * Interrupt Control Unit routines for the NEC VR4111. + * Interrupt Control Unit routines for the NEC VR4181. * * Author: Yoichi Yuasa * yy...@mv... or so...@mv... @@ -33,6 +33,7 @@ /* * Changes: * Paul Mundt <le...@ch...> + * - Modified this code for VR4181 support. * - kgdb support. * * MontaVista Software Inc. <yy...@mv...> or <so...@mv...> Index: icu.h =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common/icu.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- icu.h 14 Jun 2002 14:06:46 -0000 1.1 +++ icu.h 14 Jun 2002 14:09:25 -0000 1.2 @@ -1,9 +1,9 @@ /* * FILE NAME - * arch/mips/vr41xx/vr4111/common/icu.h + * arch/mips/vr41xx/vr4181/common/icu.h * * BRIEF MODULE DESCRIPTION - * Include file for Interrupt Control Unit of the NEC VR4111. + * Include file for Interrupt Control Unit of the NEC VR4181. * * Author: Yoichi Yuasa * yy...@mv... or so...@mv... @@ -32,6 +32,9 @@ */ /* * Changes: + * Paul Mundt <le...@ch...> + * - Modified this code for VR4181 support. + * * MontaVista Software Inc. <yy...@mv...> or <so...@mv...> * - New creation, NEC VR4122 and VR4131 are supported. * @@ -48,18 +51,18 @@ #include <linux/config.h> #include <asm/addrspace.h> -#define SYSINT1REG KSEG1ADDR(0x0b000080) -#define GIUINTLREG KSEG1ADDR(0x0b000088) -#define MSYSINT1REG KSEG1ADDR(0x0b00008c) -#define MGIUINTLREG KSEG1ADDR(0x0b000094) +#define SYSINT1REG KSEG1ADDR(0x0a000080) +#define GIUINTLREG KSEG1ADDR(0x0a000088) +#define MSYSINT1REG KSEG1ADDR(0x0a00008c) +#define MGIUINTLREG KSEG1ADDR(0x0a000094) -#define NMIREG KSEG1ADDR(0x0b000098) -#define SOFTINTREG KSEG1ADDR(0x0b00009a) +#define NMIREG KSEG1ADDR(0x0a000098) +#define SOFTINTREG KSEG1ADDR(0x0a00009a) -#define SYSINT2REG KSEG1ADDR(0x0b000200) -#define GIUINTHREG KSEG1ADDR(0x0b000202) -#define MSYSINT2REG KSEG1ADDR(0x0b000206) -#define MGIUINTHREG KSEG1ADDR(0x0b000208) +#define SYSINT2REG KSEG1ADDR(0x0a000200) +#define GIUINTHREG KSEG1ADDR(0x0a000202) +#define MSYSINT2REG KSEG1ADDR(0x0a000206) +#define MGIUINTHREG KSEG1ADDR(0x0a000208) #define GIUINTSTATL KSEG1ADDR(0x0b000108) #define GIUINTSTATH KSEG1ADDR(0x0b00010a) |
From: Paul M. <le...@us...> - 2002-06-14 14:06:48
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common In directory usw-pr-cvs1:/tmp/cvs-serv334 Modified Files: Makefile Added Files: icu.c icu.h Removed Files: int_handler.S irq.c Log Message: Nuke the old interrupt handling code, use the new common interface. --- NEW FILE: icu.c --- /* * FILE NAME * arch/mips/vr41xx/vr4111/common/icu.c * * BRIEF MODULE DESCRIPTION * Interrupt Control Unit routines for the NEC VR4111. * * Author: Yoichi Yuasa * yy...@mv... or so...@mv... * * Copyright 2001,2002 MontaVista Software Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Changes: * Paul Mundt <le...@ch...> * - kgdb support. * * MontaVista Software Inc. <yy...@mv...> or <so...@mv...> * - New creation, NEC VR4122 and VR4131 are supported. * * Yoichi Yuasa <yu...@hh...> Tue, 5 Mar 2002 * - This file was copied from arch/mips/vr41xx/vr4122/common/icu.c. * Only FILE NAME and BRIEF MODULE DESCRIPTION modified this file. */ #include <linux/init.h> #include <linux/interrupt.h> #include <linux/irq.h> #include <linux/types.h> #include <asm/io.h> #include <asm/mipsregs.h> #include <asm/vr41xx.h> #include <asm/gdb-stub.h> #include "icu.h" extern asmlinkage void vr41xx_handle_interrupt(void); extern void __init init_generic_irq(void); extern void mips_cpu_irq_init(u32 irq_base); extern unsigned int do_IRQ(int irq, struct pt_regs *regs); /*=======================================================================*/ static void enable_sysint1_irq(unsigned int irq) { u16 val; val = readw(MSYSINT1REG); val |= (u16)1 << (irq - SYSINT1_IRQ_BASE); writew(val, MSYSINT1REG); } static void disable_sysint1_irq(unsigned int irq) { u16 val; val = readw(MSYSINT1REG); val &= ~((u16)1 << (irq - SYSINT1_IRQ_BASE)); writew(val, MSYSINT1REG); } static unsigned int startup_sysint1_irq(unsigned int irq) { enable_sysint1_irq(irq); return 0; /* never anything pending */ } #define shutdown_sysint1_irq disable_sysint1_irq #define ack_sysint1_irq disable_sysint1_irq static void end_sysint1_irq(unsigned int irq) { if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) enable_sysint1_irq(irq); } static struct hw_interrupt_type sysint1_irq_type = { "SYSINT1", startup_sysint1_irq, shutdown_sysint1_irq, enable_sysint1_irq, disable_sysint1_irq, ack_sysint1_irq, end_sysint1_irq, NULL }; /*=======================================================================*/ static void enable_sysint2_irq(unsigned int irq) { u16 val; val = readw(MSYSINT2REG); val |= (u16)1 << (irq - SYSINT2_IRQ_BASE); writew(val, MSYSINT2REG); } static void disable_sysint2_irq(unsigned int irq) { u16 val; val = readw(MSYSINT2REG); val &= ~((u16)1 << (irq - SYSINT2_IRQ_BASE)); writew(val, MSYSINT2REG); } static unsigned int startup_sysint2_irq(unsigned int irq) { enable_sysint2_irq(irq); return 0; /* never anything pending */ } #define shutdown_sysint2_irq disable_sysint2_irq #define ack_sysint2_irq disable_sysint2_irq static void end_sysint2_irq(unsigned int irq) { if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) enable_sysint2_irq(irq); } static struct hw_interrupt_type sysint2_irq_type = { "SYSINT2", startup_sysint2_irq, shutdown_sysint2_irq, enable_sysint2_irq, disable_sysint2_irq, ack_sysint2_irq, end_sysint2_irq, NULL }; /*=======================================================================*/ static void enable_giuintl_irq(unsigned int irq) { u16 val, mask; mask = (u16)1 << (irq - GIUINTL_IRQ_BASE); writew(mask, GIUINTSTATL); val = readw(MGIUINTLREG); val |= mask; writew(val, MGIUINTLREG); val = readw(GIUINTENL); val |= mask; writew(val, GIUINTENL); } static void disable_giuintl_irq(unsigned int irq) { u16 val, mask; mask = (u16)1 << (irq - GIUINTL_IRQ_BASE); val = readw(GIUINTENL); val &= ~mask; writew(val, GIUINTENL); val = readw(MGIUINTLREG); val &= ~mask; writew(val, MGIUINTLREG); writew(mask, GIUINTSTATL); } static unsigned int startup_giuintl_irq(unsigned int irq) { enable_giuintl_irq(irq); return 0; /* never anything pending */ } #define shutdown_giuintl_irq disable_giuintl_irq #define ack_giuintl_irq disable_giuintl_irq static void end_giuintl_irq(unsigned int irq) { if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) enable_giuintl_irq(irq); } static struct hw_interrupt_type giuintl_irq_type = { "GIUINTL", startup_giuintl_irq, shutdown_giuintl_irq, enable_giuintl_irq, disable_giuintl_irq, ack_giuintl_irq, end_giuintl_irq, NULL }; /*=======================================================================*/ static void enable_giuinth_irq(unsigned int irq) { unsigned short val, mask; mask = (u16)1 << (irq - GIUINTH_IRQ_BASE); writew(mask, GIUINTSTATH); val = readw(MGIUINTHREG); val |= mask; writew(val, MGIUINTHREG); val = readw(GIUINTENH); val |= mask; writew(val, GIUINTENH); } static void disable_giuinth_irq(unsigned int irq) { unsigned short val, mask; mask = (u16)1 << (irq - GIUINTH_IRQ_BASE); val= readw(GIUINTENH); val &= ~mask; writew(val, GIUINTENH); val = readw(MGIUINTHREG); val &= ~mask; writew(val, MGIUINTHREG); writew(mask, GIUINTSTATH); } static unsigned int startup_giuinth_irq(unsigned int irq) { enable_giuinth_irq(irq); return 0; /* never anything pending */ } #define shutdown_giuinth_irq disable_giuinth_irq #define ack_giuinth_irq disable_giuinth_irq static void end_giuinth_irq(unsigned int irq) { if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) enable_giuinth_irq(irq); } static struct hw_interrupt_type giuinth_irq_type = { "GIUINTH", startup_giuinth_irq, shutdown_giuinth_irq, enable_giuinth_irq, disable_giuinth_irq, ack_giuinth_irq, end_giuinth_irq, NULL }; /*=======================================================================*/ static struct irqcascade vr41xx_irqcascade[32]; static struct irqaction cascade = {no_action, 0, 0, "cascade", NULL, NULL}; static int no_cascade_get_irq_number(int irq) { return -1; } void vr41xx_cascade_irq(unsigned int irq, int (*get_irq_number)(int irq)) { if (GIUINTL_IRQ_BASE <= irq < GIUINTH_IRQ_LAST) { vr41xx_irqcascade[irq - GIUINTL_IRQ_BASE].cascade = 1; vr41xx_irqcascade[irq - GIUINTL_IRQ_BASE].get_irq_number = get_irq_number; setup_irq(irq, &cascade); } } static void __init vr41xx_icu_irq_init(void) { int i; writew(0, MSYSINT1REG); writew(0, MSYSINT2REG); writew(0, MGIUINTLREG); writew(0, MGIUINTHREG); writew(0, GIUINTENL); writew(0, GIUINTENH); writew(0xffff, GIUINTSTATL); writew(0xffff, GIUINTSTATH); for (i = SYSINT1_IRQ_BASE; i <= GIUINTH_IRQ_LAST; i++) { if (i >= SYSINT1_IRQ_BASE && i <= SYSINT1_IRQ_LAST) irq_desc[i].handler = &sysint1_irq_type; else if (i >= SYSINT2_IRQ_BASE && i <= SYSINT2_IRQ_LAST) irq_desc[i].handler = &sysint2_irq_type; else if (i >= GIUINTL_IRQ_BASE && i <= GIUINTL_IRQ_LAST) irq_desc[i].handler = &giuintl_irq_type; else if (i >= GIUINTH_IRQ_BASE && i <= GIUINTH_IRQ_LAST) irq_desc[i].handler = &giuinth_irq_type; } for (i = 0; i < 32; i++) { vr41xx_irqcascade[i].cascade = 0; vr41xx_irqcascade[i].get_irq_number = no_cascade_get_irq_number; } } void __init init_IRQ(void) { memset(irq_desc, 0, sizeof(irq_desc)); init_generic_irq(); mips_cpu_irq_init(MIPS_CPU_IRQ_BASE); vr41xx_icu_irq_init(); vr41xx_board_irq_init(); setup_irq(ICU_IRQ, &cascade); setup_irq(GIU_IRQ, &cascade); set_except_vector(0, vr41xx_handle_interrupt); #ifdef CONFIG_REMOTE_DEBUG printk("Setting debug traps - please connect the remote debugger.\n"); set_debug_traps(); breakpoint(); #endif } /*=======================================================================*/ static void giuint_do_IRQ(int giuint_irq, struct pt_regs *regs) { struct irqcascade *irq; int cascade_irq; irq = &vr41xx_irqcascade[giuint_irq - GIUINTL_IRQ_BASE]; if (irq->cascade) { cascade_irq = irq->get_irq_number(giuint_irq); disable_irq(giuint_irq); if (cascade_irq > 0) do_IRQ(cascade_irq, regs); enable_irq(giuint_irq); } else do_IRQ(giuint_irq, regs); } static inline void giuint_irqdispatch(u16 pendl, u16 pendh, struct pt_regs *regs) { int i; if (pendl) { for (i = 0; i < 16; i++) { if (pendl & (0x0001 << i)) { giuint_do_IRQ(GIUINTL_IRQ_BASE + i, regs); return; } } } else if (pendh) { for (i = 0; i < 16; i++) { if (pendh & (0x0001 << i)) { giuint_do_IRQ(GIUINTH_IRQ_BASE + i, regs); return; } } } } asmlinkage void icu_irqdispatch(struct pt_regs *regs) { u16 pend1, pend2, pendl, pendh; u16 mask1, mask2, maskl, maskh; int i; pend1 = readw(SYSINT1REG); mask1 = readw(MSYSINT1REG); pend2 = readw(SYSINT2REG); mask2 = readw(MSYSINT2REG); pendl = readw(GIUINTLREG); maskl = readw(MGIUINTLREG); pendh = readw(GIUINTHREG); maskh = readw(MGIUINTHREG); pend1 &= mask1; pend2 &= mask2; pendl &= maskl; pendh &= maskh; if (pend1) { if ((pend1 & 0x01ff) == 0x0100) { giuint_irqdispatch(pendl, pendh, regs); } else { for (i = 0; i < 16; i++) { if (pend1 & (0x0001 << i)) { do_IRQ(SYSINT1_IRQ_BASE + i, regs); break; } } } return; } else if (pend2) { for (i = 0; i < 16; i++) { if (pend2 & (0x0001 << i)) { do_IRQ(SYSINT2_IRQ_BASE + i, regs); break; } } } } --- NEW FILE: icu.h --- /* * FILE NAME * arch/mips/vr41xx/vr4111/common/icu.h * * BRIEF MODULE DESCRIPTION * Include file for Interrupt Control Unit of the NEC VR4111. * * Author: Yoichi Yuasa * yy...@mv... or so...@mv... * * Copyright 2002 MontaVista Software Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Changes: * MontaVista Software Inc. <yy...@mv...> or <so...@mv...> * - New creation, NEC VR4122 and VR4131 are supported. * * Yoichi Yuasa <yu...@hh...> Tue, 5 Mar 2002 * - Modified this code for VR4121 support. * * Yoichi Yuasa <yu...@hh...> Tue, 5 Mar 2002 * - This file was copied from arch/mips/vr41xx/vr4121/common/icu.h. * Only FILE NAME and BRIEF MODULE DESCRIPTION modified this file. */ #ifndef __VR41XX_ICU_H #define __VR41XX_ICU_H #include <linux/config.h> #include <asm/addrspace.h> #define SYSINT1REG KSEG1ADDR(0x0b000080) #define GIUINTLREG KSEG1ADDR(0x0b000088) #define MSYSINT1REG KSEG1ADDR(0x0b00008c) #define MGIUINTLREG KSEG1ADDR(0x0b000094) #define NMIREG KSEG1ADDR(0x0b000098) #define SOFTINTREG KSEG1ADDR(0x0b00009a) #define SYSINT2REG KSEG1ADDR(0x0b000200) #define GIUINTHREG KSEG1ADDR(0x0b000202) #define MSYSINT2REG KSEG1ADDR(0x0b000206) #define MGIUINTHREG KSEG1ADDR(0x0b000208) #define GIUINTSTATL KSEG1ADDR(0x0b000108) #define GIUINTSTATH KSEG1ADDR(0x0b00010a) #define GIUINTENL KSEG1ADDR(0x0b00010c) #define GIUINTENH KSEG1ADDR(0x0b00010e) #define GIUINTTYPL KSEG1ADDR(0x0b000110) #define GIUINTTYPH KSEG1ADDR(0x0b000112) #define GIUINTALSELL KSEG1ADDR(0x0b000114) #define GIUINTALSELH KSEG1ADDR(0x0b000116) #define GIUINTHTSELL KSEG1ADDR(0x0b000118) #define GIUINTHTSELH KSEG1ADDR(0x0b00011a) #define MIPS_CPU_IRQ_BASE 0 #define SYSINT1_IRQ_BASE 8 #define SYSINT1_IRQ_LAST 23 #define SYSINT2_IRQ_BASE 24 #define SYSINT2_IRQ_LAST 39 #define GIUINTL_IRQ_BASE 40 #define GIUINTL_IRQ_LAST 55 #define GIUINTH_IRQ_BASE 56 #define GIUINTH_IRQ_LAST 71 #define ICU_IRQ 2 #define GIU_IRQ (SYSINT1_IRQ_BASE + 8) #endif /* __VR41XX_ICU_H */ Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 14 Jun 2002 13:54:59 -0000 1.1 +++ Makefile 14 Jun 2002 14:06:46 -0000 1.2 @@ -13,6 +13,6 @@ O_TARGET:= vr4181.o -obj-y := irq.o int_handler.o serial.o time.o +obj-y := icu.o serial.o time.o include $(TOPDIR)/Rules.make --- int_handler.S DELETED --- --- irq.c DELETED --- |
From: Paul M. <le...@us...> - 2002-06-14 14:03:13
|
Update of /cvsroot/linux-mips/linux/arch/mips In directory usw-pr-cvs1:/tmp/cvs-serv31807 Modified Files: Makefile Log Message: Update Osprey locations. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/Makefile,v retrieving revision 1.50 retrieving revision 1.51 diff -u -d -r1.50 -r1.51 --- Makefile 13 Jun 2002 13:35:49 -0000 1.50 +++ Makefile 14 Jun 2002 14:03:08 -0000 1.51 @@ -241,9 +241,12 @@ # NEC Osprey (vr4181) board # ifdef CONFIG_NEC_OSPREY -SUBDIRS += arch/mips/vr4181/common arch/mips/vr4181/osprey -LIBS += arch/mips/vr4181/common/vr4181.o \ - arch/mips/vr4181/osprey/osprey.o +SUBDIRS += arch/mips/vr41xx/common \ + arch/mips/vr41xx/vr4181/common \ + arch/mips/vr41xx/vr4181/osprey +LIBS += arch/mips/vr41xx/common/vr41xx.o \ + arch/mips/vr41xx/vr4181/common/vr4181.o \ + arch/mips/vr41xx/vr4181/osprey/osprey.o LOADADDR += 0x80002000 endif |
From: Paul M. <le...@us...> - 2002-06-14 14:01:55
|
Update of /cvsroot/linux-mips/linux/arch/mips/kernel In directory usw-pr-cvs1:/tmp/cvs-serv31187/kernel Modified Files: setup.c Log Message: nec_osprey_setup() -> nec_vr41xx_setup(). Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/kernel/setup.c,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- setup.c 29 May 2002 18:19:58 -0000 1.64 +++ setup.c 14 Jun 2002 14:01:52 -0000 1.65 @@ -762,7 +762,6 @@ void ikos_setup(void); void momenco_ocelot_setup(void); void nino_setup(void); - void nec_osprey_setup(void); void ps2_setup(void); void jmr3927_setup(void); void it8172_setup(void); @@ -861,11 +860,6 @@ case MACH_GROUP_NEC_DDB: ddb_setup(); break; -#endif -#ifdef CONFIG_NEC_OSPREY - case MACH_GROUP_NEC_VR41XX: - nec_osprey_setup(); - break; #endif #ifdef CONFIG_CPU_VR41XX case MACH_GROUP_NEC_VR41XX: |
From: Paul M. <le...@us...> - 2002-06-14 14:01:55
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey In directory usw-pr-cvs1:/tmp/cvs-serv31187/vr41xx/vr4181/osprey Modified Files: setup.c Log Message: nec_osprey_setup() -> nec_vr41xx_setup(). Index: setup.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey/setup.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- setup.c 14 Jun 2002 13:55:59 -0000 1.1 +++ setup.c 14 Jun 2002 14:01:52 -0000 1.2 @@ -36,7 +36,7 @@ { } -void __init nec_osprey_setup(void) +void __init nec_vr41xx_setup(void) { set_io_port_base(VR4181_PORT_BASE); isa_slot_offset = VR4181_ISAMEM_BASE; |
From: Paul M. <le...@us...> - 2002-06-14 13:56:02
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey In directory usw-pr-cvs1:/tmp/cvs-serv28603 Added Files: Makefile dbg_io.c prom.c reset.c setup.c Log Message: Re-add Osprey specific bits. --- NEW FILE: Makefile --- # # Makefile for common code of NEC Osprey board # # Note! Dependencies are done automagically by 'make dep', which also # removes any old dependencies. DON'T put your own dependencies here # unless it's something special (ie not a .c file). # .S.s: $(CPP) $(CFLAGS) $< -o $*.s .S.o: $(CC) $(CFLAGS) -c $< -o $*.o O_TARGET := osprey.o obj-y := setup.o prom.o reset.o obj-$(CONFIG_REMOTE_DEBUG) += dbg_io.o include $(TOPDIR)/Rules.make --- NEW FILE: dbg_io.c --- /* * kgdb io functions for osprey. We use the serial port on debug board. * * Copyright (C) 2001 MontaVista Software Inc. * Author: js...@mv... or js...@ju... * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * */ /* ======================= CONFIG ======================== */ /* [jsun] we use the second serial port for kdb */ #define BASE 0xb7fffff0 #define MAX_BAUD 115200 /* distance in bytes between two serial registers */ #define REG_OFFSET 1 /* * 0 - kgdb does serial init * 1 - kgdb skip serial init */ static int remoteDebugInitialized = 1; /* * the default baud rate *if* kgdb does serial init */ #define BAUD_DEFAULT UART16550_BAUD_38400 /* ======================= END OF CONFIG ======================== */ typedef unsigned char uint8; typedef unsigned int uint32; #define UART16550_BAUD_2400 2400 #define UART16550_BAUD_4800 4800 #define UART16550_BAUD_9600 9600 #define UART16550_BAUD_19200 19200 #define UART16550_BAUD_38400 38400 #define UART16550_BAUD_57600 57600 #define UART16550_BAUD_115200 115200 #define UART16550_PARITY_NONE 0 #define UART16550_PARITY_ODD 0x08 #define UART16550_PARITY_EVEN 0x18 #define UART16550_PARITY_MARK 0x28 #define UART16550_PARITY_SPACE 0x38 #define UART16550_DATA_5BIT 0x0 #define UART16550_DATA_6BIT 0x1 #define UART16550_DATA_7BIT 0x2 #define UART16550_DATA_8BIT 0x3 #define UART16550_STOP_1BIT 0x0 #define UART16550_STOP_2BIT 0x4 /* register offset */ #define OFS_RCV_BUFFER 0 #define OFS_TRANS_HOLD 0 #define OFS_SEND_BUFFER 0 #define OFS_INTR_ENABLE (1*REG_OFFSET) #define OFS_INTR_ID (2*REG_OFFSET) #define OFS_DATA_FORMAT (3*REG_OFFSET) #define OFS_LINE_CONTROL (3*REG_OFFSET) #define OFS_MODEM_CONTROL (4*REG_OFFSET) #define OFS_RS232_OUTPUT (4*REG_OFFSET) #define OFS_LINE_STATUS (5*REG_OFFSET) #define OFS_MODEM_STATUS (6*REG_OFFSET) #define OFS_RS232_INPUT (6*REG_OFFSET) #define OFS_SCRATCH_PAD (7*REG_OFFSET) #define OFS_DIVISOR_LSB (0*REG_OFFSET) #define OFS_DIVISOR_MSB (1*REG_OFFSET) /* memory-mapped read/write of the port */ #define UART16550_READ(y) (*((volatile uint8*)(BASE + y))) #define UART16550_WRITE(y, z) ((*((volatile uint8*)(BASE + y))) = z) void debugInit(uint32 baud, uint8 data, uint8 parity, uint8 stop) { /* disable interrupts */ UART16550_WRITE(OFS_INTR_ENABLE, 0); /* set up buad rate */ { uint32 divisor; /* set DIAB bit */ UART16550_WRITE(OFS_LINE_CONTROL, 0x80); /* set divisor */ divisor = MAX_BAUD / baud; UART16550_WRITE(OFS_DIVISOR_LSB, divisor & 0xff); UART16550_WRITE(OFS_DIVISOR_MSB, (divisor & 0xff00) >> 8); /* clear DIAB bit */ UART16550_WRITE(OFS_LINE_CONTROL, 0x0); } /* set data format */ UART16550_WRITE(OFS_DATA_FORMAT, data | parity | stop); } uint8 getDebugChar(void) { if (!remoteDebugInitialized) { remoteDebugInitialized = 1; debugInit(BAUD_DEFAULT, UART16550_DATA_8BIT, UART16550_PARITY_NONE, UART16550_STOP_1BIT); } while ((UART16550_READ(OFS_LINE_STATUS) & 0x1) == 0); return UART16550_READ(OFS_RCV_BUFFER); } int putDebugChar(uint8 byte) { if (!remoteDebugInitialized) { remoteDebugInitialized = 1; debugInit(BAUD_DEFAULT, UART16550_DATA_8BIT, UART16550_PARITY_NONE, UART16550_STOP_1BIT); } while ((UART16550_READ(OFS_LINE_STATUS) & 0x20) == 0); UART16550_WRITE(OFS_SEND_BUFFER, byte); return 1; } --- NEW FILE: prom.c --- /* * Copyright 2001 MontaVista Software Inc. * Author: js...@mv... or js...@ju... * * arch/mips/vr4181/osprey/prom.c * prom code for osprey. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * */ #include <linux/init.h> #include <linux/config.h> #include <linux/kernel.h> #include <linux/string.h> #include <linux/mm.h> #include <linux/bootmem.h> #include <asm/bootinfo.h> #include <asm/addrspace.h> char arcs_cmdline[CL_SIZE]; const char *get_system_type(void) { return "NEC_Vr41xx Osprey"; } /* * [jsun] right now we assume it is the nec debug monitor, which does * not pass any arguments. */ void __init prom_init() { strcat(arcs_cmdline, "ether=46,0x03fe0300,eth0 "); // strcpy(arcs_cmdline, "ether=0,0x0300,eth0 " // strcat(arcs_cmdline, "video=vr4181fb:xres:240,yres:320,bpp:8 "); mips_machgroup = MACH_GROUP_NEC_VR41XX; mips_machtype = MACH_NEC_OSPREY; /* 16MB fixed */ add_memory_region(0, 16 << 20, BOOT_MEM_RAM); } void __init prom_free_prom_memory(void) { } void __init prom_fixup_mem_map(unsigned long start, unsigned long end) { } --- NEW FILE: reset.c --- /* * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * Copyright (C) 1997, 2001 Ralf Baechle * Copyright 2001 MontaVista Software Inc. * Author: js...@mv... or js...@ju... */ #include <linux/sched.h> #include <linux/mm.h> #include <asm/io.h> #include <asm/pgtable.h> #include <asm/processor.h> #include <asm/reboot.h> #include <asm/system.h> void nec_osprey_restart(char *command) { set_cp0_status(ST0_ERL); change_cp0_config(CONF_CM_CMASK, CONF_CM_UNCACHED); flush_cache_all(); write_32bit_cp0_register(CP0_WIRED, 0); __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000)); } void nec_osprey_halt(void) { printk(KERN_NOTICE "\n** You can safely turn off the power\n"); while (1) __asm__(".set\tmips3\n\t" "wait\n\t" ".set\tmips0"); } void nec_osprey_power_off(void) { nec_osprey_halt(); } --- NEW FILE: setup.c --- /* * linux/arch/mips/vr4181/setup.c * * VR41xx setup routines * * Copyright (C) 1999 Bradley D. LaRonde * Copyright (C) 1999, 2000 Michael Klar * * Copyright 2001 MontaVista Software Inc. * Author: js...@mv... or js...@ju... * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * */ #include <linux/config.h> #include <linux/console.h> #include <linux/ide.h> #include <linux/init.h> #include <linux/delay.h> #include <asm/reboot.h> #include <asm/vr4181/vr4181.h> #include <asm/io.h> extern void nec_osprey_restart(char* c); extern void nec_osprey_halt(void); extern void nec_osprey_power_off(void); extern void vr4181_init_serial(void); extern void vr4181_init_time(void); void __init bus_error_init(void) { } void __init nec_osprey_setup(void) { set_io_port_base(VR4181_PORT_BASE); isa_slot_offset = VR4181_ISAMEM_BASE; vr4181_init_serial(); vr4181_init_time(); #ifdef CONFIG_FB conswitchp = &dummy_con; #endif _machine_restart = nec_osprey_restart; _machine_halt = nec_osprey_halt; _machine_power_off = nec_osprey_power_off; /* setup resource limit */ ioport_resource.end = 0xffffffff; iomem_resource.end = 0xffffffff; /* [jsun] hack */ /* printk("[jsun] hack to change external ISA control register, %x -> %x\n", (*VR4181_XISACTL), (*VR4181_XISACTL) | 0x2); *VR4181_XISACTL |= 0x2; */ // *VR4181_GPHIBSTH = 0x2000; // *VR4181_GPMD0REG = 0x00c0; // *VR4181_GPINTEN = 1<<6; /* [jsun] I believe this will get the interrupt type right * for the ether port. */ *VR4181_GPINTTYPL = 0x3000; } |
From: Paul M. <le...@us...> - 2002-06-14 13:55:02
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common In directory usw-pr-cvs1:/tmp/cvs-serv28233 Added Files: Makefile int_handler.S irq.c serial.c time.c Log Message: Re-add Vr4181 common. --- NEW FILE: Makefile --- # # Makefile for common code of NEC vr4181 based boards # # Note! Dependencies are done automagically by 'make dep', which also # removes any old dependencies. DON'T put your own dependencies here # unless it's something special (ie not a .c file). # .S.s: $(CPP) $(CFLAGS) $< -o $*.s .S.o: $(CC) $(CFLAGS) -c $< -o $*.o O_TARGET:= vr4181.o obj-y := irq.o int_handler.o serial.o time.o include $(TOPDIR)/Rules.make --- NEW FILE: int_handler.S --- /* * arch/mips/vr4181/common/int_handler.S * * Adapted to the VR4181 and almost entirely rewritten: * Copyright (C) 1999 Bradley D. LaRonde and Michael Klar * * Clean up to conform to the new IRQ * Copyright (C) 2001 MontaVista Software Inc. * Author: Jun Sun, js...@mv... or js...@ju... * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * */ #include <asm/asm.h> #include <asm/regdef.h> #include <asm/mipsregs.h> #include <asm/stackframe.h> #include <asm/vr4181/vr4181.h> /* * [jsun] * See include/asm/vr4181/irq.h for IRQ assignment and strategy. */ .text .set noreorder .align 5 NESTED(vr4181_handle_irq, PT_SIZE, ra) .set noat SAVE_ALL CLI .set at .set noreorder mfc0 t0, CP0_CAUSE mfc0 t2, CP0_STATUS and t0, t2 /* we check IP3 first; it happens most frequently */ andi t1, t0, STATUSF_IP3 bnez t1, ll_cpu_ip3 andi t1, t0, STATUSF_IP2 bnez t1, ll_cpu_ip2 andi t1, t0, STATUSF_IP7 /* cpu timer */ bnez t1, ll_cputimer_irq andi t1, t0, STATUSF_IP4 bnez t1, ll_cpu_ip4 andi t1, t0, STATUSF_IP5 bnez t1, ll_cpu_ip5 andi t1, t0, STATUSF_IP6 bnez t1, ll_cpu_ip6 andi t1, t0, STATUSF_IP0 /* software int 0 */ bnez t1, ll_cpu_ip0 andi t1, t0, STATUSF_IP1 /* software int 1 */ bnez t1, ll_cpu_ip1 nop .set reorder do_spurious: j spurious_interrupt /* * regular CPU irqs */ ll_cputimer_irq: li a0, VR4181_IRQ_TIMER move a1, sp jal do_IRQ j ret_from_irq ll_cpu_ip0: li a0, VR4181_IRQ_SW1 move a1, sp jal do_IRQ j ret_from_irq ll_cpu_ip1: li a0, VR4181_IRQ_SW2 move a1, sp jal do_IRQ j ret_from_irq ll_cpu_ip3: li a0, VR4181_IRQ_INT1 move a1, sp jal do_IRQ j ret_from_irq ll_cpu_ip4: li a0, VR4181_IRQ_INT2 move a1, sp jal do_IRQ j ret_from_irq ll_cpu_ip5: li a0, VR4181_IRQ_INT3 move a1, sp jal do_IRQ j ret_from_irq ll_cpu_ip6: li a0, VR4181_IRQ_INT4 move a1, sp jal do_IRQ j ret_from_irq /* * One of the sys irq has happend. * * In the interest of speed, we first determine in the following order * which 16-irq block have pending interrupts: * sysint1 (16 sources, including cascading intrs from GPIO) * sysint2 * gpio (16 intr sources) * * Then we do binary search to find the exact interrupt source. */ ll_cpu_ip2: lui t3,%hi(VR4181_SYSINT1REG) lhu t0,%lo(VR4181_SYSINT1REG)(t3) lhu t2,%lo(VR4181_MSYSINT1REG)(t3) and t0, 0xfffb /* hack - remove RTC Long 1 intr */ and t0, t2 beqz t0, check_sysint2 /* check for GPIO interrupts */ andi t1, t0, 0x0100 bnez t1, check_gpio_int /* so we have an interrupt in sysint1 which is not gpio int */ li a0, VR4181_SYS_IRQ_BASE - 1 j check_16 check_sysint2: lhu t0,%lo(VR4181_SYSINT2REG)(t3) lhu t2,%lo(VR4181_MSYSINT2REG)(t3) and t0, 0xfffe /* hack - remove RTC Long 2 intr */ and t0, t2 li a0, VR4181_SYS_IRQ_BASE + 16 - 1 j check_16 check_gpio_int: lui t3,%hi(VR4181_GPINTMSK) lhu t0,%lo(VR4181_GPINTMSK)(t3) lhu t2,%lo(VR4181_GPINTSTAT)(t3) xori t0, 0xffff /* why? reverse logic? */ and t0, t2 li a0, VR4181_GPIO_IRQ_BASE - 1 j check_16 /* * When we reach check_16, we have 16-bit status in t0 and base irq number * in a0. */ check_16: andi t1, t0, 0xff bnez t1, check_8 srl t0, 8 addi a0, 8 j check_8 /* * When we reach check_8, we have 8-bit status in t0 and base irq number * in a0. */ check_8: andi t1, t0, 0xf bnez t1, check_4 srl t0, 4 addi a0, 4 j check_4 /* * When we reach check_4, we have 4-bit status in t0 and base irq number * in a0. */ check_4: andi t0, t0, 0xf beqz t0, do_spurious loop: andi t2, t0, 0x1 srl t0, 1 addi a0, 1 beqz t2, loop found_it: move a1, sp jal do_IRQ j ret_from_irq END(vr4181_handle_irq) --- NEW FILE: irq.c --- /* * Copyright (C) 2001 MontaVista Software Inc. * Author: Jun Sun, js...@mv... or js...@ju... * * linux/arch/mips/vr4181/common/irq.c * Completely re-written to use the new irq.c * * Credits to Bradley D. LaRonde and Michael Klar for writing the original * irq.c file which was derived from the common irq.c file. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * */ #include <linux/types.h> #include <linux/init.h> #include <linux/kernel_stat.h> #include <linux/signal.h> #include <linux/sched.h> #include <linux/interrupt.h> #include <linux/slab.h> #include <linux/random.h> #include <asm/irq.h> #include <asm/mipsregs.h> #include <asm/gdb-stub.h> #include <asm/vr4181/vr4181.h> /* * Strategy: * * We essentially have three irq controllers, CPU, system, and gpio. * * CPU irq controller is taken care by arch/mips/kernel/irq_cpu.c and * CONFIG_IRQ_CPU config option. * * We here provide sys_irq and gpio_irq controller code. */ static int sys_irq_base; static int gpio_irq_base; /* ---------------------- sys irq ------------------------ */ static void sys_irq_enable(unsigned int irq) { irq -= sys_irq_base; if (irq < 16) { *VR4181_MSYSINT1REG |= (u16)(1 << irq); } else { irq -= 16; *VR4181_MSYSINT2REG |= (u16)(1 << irq); } } static void sys_irq_disable(unsigned int irq) { irq -= sys_irq_base; if (irq < 16) { *VR4181_MSYSINT1REG &= ~((u16)(1 << irq)); } else { irq -= 16; *VR4181_MSYSINT2REG &= ~((u16)(1 << irq)); } } static unsigned int sys_irq_startup(unsigned int irq) { sys_irq_enable(irq); return 0; } #define sys_irq_shutdown sys_irq_disable #define sys_irq_ack sys_irq_disable static void sys_irq_end(unsigned int irq) { if(!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) sys_irq_enable(irq); } static hw_irq_controller sys_irq_controller = { "vr4181_sys_irq", sys_irq_startup, sys_irq_shutdown, sys_irq_enable, sys_irq_disable, sys_irq_ack, sys_irq_end, NULL /* no affinity stuff for UP */ }; /* ---------------------- gpio irq ------------------------ */ /* gpio irq lines use reverse logic */ static void gpio_irq_enable(unsigned int irq) { irq -= gpio_irq_base; *VR4181_GPINTMSK &= ~((u16)(1 << irq)); } static void gpio_irq_disable(unsigned int irq) { irq -= gpio_irq_base; *VR4181_GPINTMSK |= (u16)(1 << irq); } static unsigned int gpio_irq_startup(unsigned int irq) { gpio_irq_enable(irq); irq -= gpio_irq_base; *VR4181_GPINTEN |= (u16)(1 << irq ); return 0; } static void gpio_irq_shutdown(unsigned int irq) { gpio_irq_disable(irq); irq -= gpio_irq_base; *VR4181_GPINTEN &= ~((u16)(1 << irq )); } static void gpio_irq_ack(unsigned int irq) { u16 irqtype; u16 irqshift; gpio_irq_disable(irq); /* we clear interrupt if it is edge triggered */ irq -= gpio_irq_base; if (irq < 8) { irqtype = *VR4181_GPINTTYPL; irqshift = 2 << (irq*2); } else { irqtype = *VR4181_GPINTTYPH; irqshift = 2 << ((irq-8)*2); } if ( ! (irqtype & irqshift) ) { *VR4181_GPINTSTAT = (u16) (1 << irq); } } static void gpio_irq_end(unsigned int irq) { if(!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) gpio_irq_enable(irq); } static hw_irq_controller gpio_irq_controller = { "vr4181_gpio_irq", gpio_irq_startup, gpio_irq_shutdown, gpio_irq_enable, gpio_irq_disable, gpio_irq_ack, gpio_irq_end, NULL /* no affinity stuff for UP */ }; /* --------------------- IRQ init stuff ---------------------- */ extern asmlinkage void vr4181_handle_irq(void); extern void breakpoint(void); extern int setup_irq(unsigned int irq, struct irqaction *irqaction); extern void mips_cpu_irq_init(u32 irq_base); static struct irqaction cascade = { no_action, SA_INTERRUPT, 0, "cascade", NULL, NULL }; static struct irqaction reserved = { no_action, SA_INTERRUPT, 0, "cascade", NULL, NULL }; void __init init_IRQ(void) { int i; extern irq_desc_t irq_desc[]; set_except_vector(0, vr4181_handle_irq); /* init CPU irqs */ mips_cpu_irq_init(VR4181_CPU_IRQ_BASE); /* init sys irqs */ sys_irq_base = VR4181_SYS_IRQ_BASE; for (i=sys_irq_base; i < sys_irq_base + VR4181_NUM_SYS_IRQ; i++) { irq_desc[i].status = IRQ_DISABLED; irq_desc[i].action = NULL; irq_desc[i].depth = 1; irq_desc[i].handler = &sys_irq_controller; } /* init gpio irqs */ gpio_irq_base = VR4181_GPIO_IRQ_BASE; for (i=gpio_irq_base; i < gpio_irq_base + VR4181_NUM_GPIO_IRQ; i++) { irq_desc[i].status = IRQ_DISABLED; irq_desc[i].action = NULL; irq_desc[i].depth = 1; irq_desc[i].handler = &gpio_irq_controller; } /* Default all ICU IRQs to off ... */ *VR4181_MSYSINT1REG = 0; *VR4181_MSYSINT2REG = 0; /* We initialize the level 2 ICU registers to all bits disabled. */ *VR4181_MPIUINTREG = 0; *VR4181_MAIUINTREG = 0; *VR4181_MKIUINTREG = 0; /* disable all GPIO intrs */ *VR4181_GPINTMSK = 0xffff; /* vector handler. What these do is register the IRQ as non-sharable */ setup_irq(VR4181_IRQ_INT0, &cascade); setup_irq(VR4181_IRQ_GIU, &cascade); /* * RTC interrupts are interesting. They have two destinations. * One is at sys irq controller, and the other is at CPU IP3 and IP4. * RTC timer is used as system timer. * We enable them here, but timer routine will register later * with CPU IP3/IP4. */ setup_irq(VR4181_IRQ_RTCL1, &reserved); setup_irq(VR4181_IRQ_RTCL2, &reserved); #ifdef CONFIG_REMOTE_DEBUG printk("Setting debug traps - please connect the remote debugger.\n"); set_debug_traps(); // you may move this line to whereever you want breakpoint(); #endif } --- NEW FILE: serial.c --- /* * Copyright 2001 MontaVista Software Inc. * Author: Jun Sun, js...@mv... or js...@ju... * * arch/mips/vr4181/common/serial.c * initialize serial port on vr4181. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * */ /* * [jsun, 010925] * You need to make sure rs_table has at least one element in * drivers/char/serial.c file. There is no good way to do it right * now. A workaround is to include CONFIG_SERIAL_MANY_PORTS in your * configure file, which would gives you 64 ports and wastes 11K ram. */ #include <linux/types.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/serial.h> #include <asm/vr4181/vr4181.h> void __init vr4181_init_serial(void) { struct serial_struct s; /* turn on UART clock */ *VR4181_CMUCLKMSK |= VR4181_CMUCLKMSK_MSKSIU; /* clear memory */ memset(&s, 0, sizeof(s)); s.line = 0; /* we set the first one */ s.baud_base = 1152000; s.irq = VR4181_IRQ_SIU; s.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; /* STD_COM_FLAGS */ s.iomem_base = (u8*)VR4181_SIURB; s.iomem_reg_shift = 0; s.io_type = SERIAL_IO_MEM; if (early_serial_setup(&s) != 0) { panic("vr4181_init_serial() failed!"); } } --- NEW FILE: time.c --- /* * Copyright 2001 MontaVista Software Inc. * Author: js...@mv... or js...@ju... * * rtc and time ops for vr4181. Part of code is drived from * linux-vr, originally written by Bradley D. LaRonde & Michael Klar. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * */ #include <linux/kernel.h> #include <linux/spinlock.h> #include <linux/param.h> /* for HZ */ #include <linux/time.h> #include <linux/interrupt.h> #include <asm/system.h> #include <asm/time.h> #include <asm/vr4181/vr4181.h> #define COUNTS_PER_JIFFY ((32768 + HZ/2) / HZ) /* * RTC ops */ spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED; /* per VR41xx docs, bad data can be read if between 2 counts */ static inline unsigned short read_time_reg(volatile unsigned short *reg) { unsigned short value; do { value = *reg; barrier(); } while (value != *reg); return value; } static unsigned long vr4181_rtc_get_time(void) { unsigned short regh, regm, regl; // why this crazy order, you ask? to guarantee that neither m // nor l wrap before all 3 read do { regm = read_time_reg(VR4181_ETIMEMREG); barrier(); regh = read_time_reg(VR4181_ETIMEHREG); barrier(); regl = read_time_reg(VR4181_ETIMELREG); } while (regm != read_time_reg(VR4181_ETIMEMREG)); return ((regh << 17) | (regm << 1) | (regl >> 15)); } static int vr4181_rtc_set_time(unsigned long timeval) { unsigned short intreg; unsigned long flags; spin_lock_irqsave(&rtc_lock, flags); intreg = *VR4181_RTCINTREG & 0x05; barrier(); *VR4181_ETIMELREG = timeval << 15; *VR4181_ETIMEMREG = timeval >> 1; *VR4181_ETIMEHREG = timeval >> 17; barrier(); // assume that any ints that just triggered are invalid, since the // time value is written non-atomically in 3 separate regs *VR4181_RTCINTREG = 0x05 ^ intreg; spin_unlock_irqrestore(&rtc_lock, flags); return 0; } /* * timer interrupt routine (wrapper) * * we need our own interrupt routine because we need to clear * RTC1 interrupt. */ static void vr4181_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) { /* Clear the interrupt. */ *VR4181_RTCINTREG = 0x2; /* call the generic one */ timer_interrupt(irq, dev_id, regs); } /* * vr4181_time_init: * * We pick the following choices: * . we use elapsed timer as the RTC. We set some reasonable init data since * it does not persist across reset * . we use RTC1 as the system timer interrupt source. * . we use CPU counter for fast_gettimeoffset and we calivrate the cpu * frequency. In other words, we use calibrate_div64_gettimeoffset(). * . we use our own timer interrupt routine which clears the interrupt * and then calls the generic high-level timer interrupt routine. * */ extern int setup_irq(unsigned int irq, struct irqaction *irqaction); static void vr4181_timer_setup(struct irqaction *irq) { /* over-write the handler to be our own one */ irq->handler = vr4181_timer_interrupt; /* sets up the frequency */ *VR4181_RTCL1LREG = COUNTS_PER_JIFFY; *VR4181_RTCL1HREG = 0; /* and ack any pending ints */ *VR4181_RTCINTREG = 0x2; /* setup irqaction */ setup_irq(VR4181_IRQ_INT1, irq); } void vr4181_init_time(void) { /* setup hookup functions */ rtc_get_time = vr4181_rtc_get_time; rtc_set_time = vr4181_rtc_set_time; board_timer_setup = vr4181_timer_setup; } |
From: Paul M. <le...@us...> - 2002-06-14 13:51:07
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey In directory usw-pr-cvs1:/tmp/cvs-serv27049/vr4181/osprey Log Message: Directory /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/osprey added to the repository |
From: Paul M. <le...@us...> - 2002-06-14 13:51:00
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common In directory usw-pr-cvs1:/tmp/cvs-serv26982/vr4181/common Log Message: Directory /cvsroot/linux-mips/linux/arch/mips/vr41xx/vr4181/common added to the repository |
From: Paul M. <le...@us...> - 2002-06-14 13:49:48
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr4181/osprey In directory usw-pr-cvs1:/tmp/cvs-serv26449/vr4181/osprey Removed Files: Makefile dbg_io.c prom.c reset.c setup.c Log Message: Send Osprey to a better place. --- Makefile DELETED --- --- dbg_io.c DELETED --- --- prom.c DELETED --- --- reset.c DELETED --- --- setup.c DELETED --- |
From: Paul M. <le...@us...> - 2002-06-14 13:49:47
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr4181/common In directory usw-pr-cvs1:/tmp/cvs-serv26449/vr4181/common Removed Files: Makefile int_handler.S irq.c serial.c time.c Log Message: Send Osprey to a better place. --- Makefile DELETED --- --- int_handler.S DELETED --- --- irq.c DELETED --- --- serial.c DELETED --- --- time.c DELETED --- |
From: Steve L. <slo...@us...> - 2002-06-13 18:42:30
|
Update of /cvsroot/linux-mips/linux/arch/mips/au1000/common In directory usw-pr-cvs1:/tmp/cvs-serv31034 Modified Files: usbdev.c Log Message: Allow the device state to remain in the CONFIGURED state when a set address request is received but the requested address hasn't changed. Index: usbdev.c =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/au1000/common/usbdev.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- usbdev.c 29 May 2002 00:23:16 -0000 1.11 +++ usbdev.c 13 Jun 2002 18:42:22 -0000 1.12 @@ -449,10 +449,10 @@ dma_cache_wback_inv((unsigned long)pkt->payload, pkt->size); /* - * The write fifo should already be drained if things are - * working right, but flush it anyway just in case. + * make sure FIFO is empty */ flush_write_fifo(ep); + cs = au_readl(ep->reg->ctrl_stat) & USBDEV_CS_STALL; cs |= (pkt->size << USBDEV_CS_TSIZE_BIT); au_writel(cs, ep->reg->ctrl_stat); @@ -491,6 +491,12 @@ "NAK" : "ACK", pkt, ep->inlist.count); } + /* + * The write fifo should already be drained if things are + * working right, but flush it anyway just in case. + */ + flush_write_fifo(ep); + // begin transmitting next packet in the inlist if (ep->inlist.count) { kickstart_send_packet(ep); @@ -555,11 +561,6 @@ return; } - /* - * The read fifo should already be drained if things are - * working right, but flush it anyway just in case. - */ - flush_read_fifo(ep); if (get_dma_active_buffer(ep->outdma) == 1) { clear_dma_done1(ep->outdma); set_dma_count1(ep->outdma, ep->max_pkt_size); @@ -607,6 +608,10 @@ * need to pull out any remaining bytes in the FIFO. */ endpoint_fifo_read(ep); + /* + * should be drained now, but flush anyway just in case. + */ + flush_read_fifo(ep); pkt->status = (cs & USBDEV_CS_NAK) ? PKT_STATUS_NAK : PKT_STATUS_ACK; if (ep->address == 0 && (cs & USBDEV_CS_SU)) @@ -648,7 +653,7 @@ break; } - return SETUP_STAGE; // FIXME: must be status stage! + return STATUS_STAGE; } static ep0_stage_t @@ -713,20 +718,26 @@ static ep0_stage_t do_set_address(struct usb_dev* dev, devrequest* setup) { - dev->address = le16_to_cpu(setup->value); - dbg(__FUNCTION__ ": our address=%d", dev->address); - if (dev->address > 127 || dev->state == CONFIGURED) { + int new_state = dev->state; + int new_addr = le16_to_cpu(setup->value); + + dbg(__FUNCTION__ ": our address=%d", new_addr); + + if (new_addr > 127) { // usb spec doesn't tell us what to do, so just go to // default state - dev->state = DEFAULT; + new_state = DEFAULT; dev->address = 0; - } else if (dev->address) - dev->state = ADDRESS; - else - dev->state = DEFAULT; - - /* inform function layer of usbdev state change */ - dev->func_cb(CB_NEW_STATE, dev->state, dev->cb_data); + } else if (dev->address != new_addr) { + dev->address = new_addr; + new_state = ADDRESS; + } + + if (dev->state != new_state) { + dev->state = new_state; + /* inform function layer of usbdev state change */ + dev->func_cb(CB_NEW_STATE, dev->state, dev->cb_data); + } return SETUP_STAGE; } @@ -931,7 +942,7 @@ } /* - * A complete packet (SETUP, DATA0, or DATA1) has been received + * A SETUP, DATA0, or DATA1 packet has been received * on the default control endpoint's fifo. */ static void @@ -959,6 +970,9 @@ switch (dev->ep0_stage) { case SETUP_STAGE: + vdbg("SU bit is %s in setup stage", + (pkt->status & PKT_STATUS_SU) ? "set" : "not set"); + if (pkt->size == sizeof(devrequest)) { #ifdef VDEBUG if (pkt->status & PKT_STATUS_ACK) @@ -978,7 +992,7 @@ * now, set_descriptor not implemented. * * Need to place a byte in the write FIFO here, to prepare - * to send a zero-length ACK packet to the host in the + * to send a zero-length DATA ack packet to the host in the * STATUS stage. */ au_writel(0, ep0->reg->write_fifo); @@ -1005,7 +1019,7 @@ /* - * A complete packet has been received on one of the OUT endpoints (4 or 5) + * A DATA0/1 packet has been received on one of the OUT endpoints (4 or 5) */ static void process_ep_receive (struct usb_dev* dev, endpoint_t *ep) |
From: Steve L. <slo...@us...> - 2002-06-13 18:26:09
|
Update of /cvsroot/linux-mips/linux/include/asm-mips In directory usw-pr-cvs1:/tmp/cvs-serv22884 Modified Files: cpu.h Log Message: Brought in PRID_IMP_20KC from OSS. Index: cpu.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips/cpu.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- cpu.h 11 Jun 2002 15:43:54 -0000 1.28 +++ cpu.h 13 Jun 2002 18:26:04 -0000 1.29 @@ -66,6 +66,7 @@ #define PRID_IMP_R5500 0x5500 #define PRID_IMP_4KC 0x8000 #define PRID_IMP_5KC 0x8100 +#define PRID_IMP_20KC 0x8200 #define PRID_IMP_4KEC 0x8400 #define PRID_IMP_4KSC 0x8600 |
From: Paul M. <le...@us...> - 2002-06-13 13:35:54
|
Update of /cvsroot/linux-mips/linux/Documentation In directory usw-pr-cvs1:/tmp/cvs-serv16356/Documentation Modified Files: Configure.help Log Message: CONFIG_COBALT_MICRO_SERVER -> CONFIG_MIPS_COBALT Index: Configure.help =================================================================== RCS file: /cvsroot/linux-mips/linux/Documentation/Configure.help,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- Configure.help 31 May 2002 20:12:20 -0000 1.12 +++ Configure.help 13 Jun 2002 13:35:48 -0000 1.13 @@ -1877,7 +1877,7 @@ otherwise choose R3000. Support for Cobalt Micro Server -CONFIG_COBALT_MICRO_SERVER +CONFIG_MIPS_COBALT Support for MIPS-based Cobalt boxes (they have been bought by Sun and are now the "Server Appliance Business Unit") including the 2700 series -- versions 1 of the Qube and Raq. To compile a Linux kernel |
From: Paul M. <le...@us...> - 2002-06-13 13:35:54
|
Update of /cvsroot/linux-mips/linux/arch/mips In directory usw-pr-cvs1:/tmp/cvs-serv16356/arch/mips Modified Files: Makefile Log Message: CONFIG_COBALT_MICRO_SERVER -> CONFIG_MIPS_COBALT Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/Makefile,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- Makefile 5 Jun 2002 14:19:57 -0000 1.49 +++ Makefile 13 Jun 2002 13:35:49 -0000 1.50 @@ -172,7 +172,7 @@ LOADADDR += 0x80080000 endif -ifdef CONFIG_COBALT_MICRO_SERVER +ifdef CONFIG_MIPS_COBALT SUBDIRS += arch/mips/cobalt CORE_FILES += arch/mips/cobalt/cobalt.o LOADADDR += 0x80080000 |
From: Leblanc f. <fle...@us...> - 2002-06-13 12:57:36
|
Update of /cvsroot/linux-mips/linux/arch/mips In directory usw-pr-cvs1:/tmp/cvs-serv2868/arch/mips Modified Files: config.in Log Message: Correct CONFIG_PM conflict in config.in and move misplaced files. Index: config.in =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/config.in,v retrieving revision 1.101 retrieving revision 1.102 diff -u -d -r1.101 -r1.102 --- config.in 30 May 2002 20:42:08 -0000 1.101 +++ config.in 13 Jun 2002 12:57:33 -0000 1.102 @@ -693,9 +693,9 @@ define_bool CONFIG_BINFMT_AOUT n define_bool CONFIG_BINFMT_ELF y tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC +dep_bool 'Power Management support (EXPERIMENTAL)' CONFIG_PM $CONFIG_EXPERIMENTAL if [ "$CONFIG_CASIO_E15" = "y" ]; then - bool 'Power Management support (experimental)' CONFIG_PM if [ "$CONFIG_PM" = "y" ]; then bool ' Support suspend/wakeup (VR41xx hibernate)' CONFIG_PM_SUSPEND_WAKEUP bool ' Support non-volatile suspend (VR41xx suspend)' CONFIG_PM_POWERED_SUSPEND @@ -707,7 +707,6 @@ fi fi dep_bool 'Support CPU clock change (EXPERIMENTAL)' CONFIG_CPU_FREQ $CONFIG_EXPERIMENTAL -dep_bool 'Power Management support (EXPERIMENTAL)' CONFIG_PM $CONFIG_EXPERIMENTAL $CONFIG_MIPS_AU1000 endmenu source drivers/mtd/Config.in |
From: Leblanc f. <fle...@us...> - 2002-06-13 12:57:36
|
Update of /cvsroot/linux-mips/linux/arch/mips/configs In directory usw-pr-cvs1:/tmp/cvs-serv2868/arch/mips/configs Modified Files: defconfig-casio-e15 Log Message: Correct CONFIG_PM conflict in config.in and move misplaced files. Index: defconfig-casio-e15 =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/configs/defconfig-casio-e15,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- defconfig-casio-e15 13 Jun 2002 07:45:19 -0000 1.5 +++ defconfig-casio-e15 13 Jun 2002 12:57:33 -0000 1.6 @@ -10,22 +10,40 @@ CONFIG_EXPERIMENTAL=y # +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# # Machine selection # # CONFIG_ACER_PICA_61 is not set +# CONFIG_MIPS_PB1000 is not set +# CONFIG_MIPS_PB1100 is not set +# CONFIG_MIPS_PB1500 is not set # CONFIG_ALGOR_P4032 is not set # CONFIG_BAGET_MIPS is not set # CONFIG_MIPS_COBALT is not set # CONFIG_DECSTATION is not set -# CONFIG_DDB5074 is not set -# CONFIG_NEC_EAGLE is not set -# CONFIG_NEC_KORVA is not set -# CONFIG_MIPS_EV96100 is not set # CONFIG_MIPS_EV64120 is not set +# CONFIG_MIPS_EV96100 is not set +# CONFIG_MIPS_IVR is not set +# CONFIG_HP_LASERJET is not set +# CONFIG_MIPS_ITE8172 is not set # CONFIG_MIPS_ATLAS is not set +# CONFIG_MIPS_MAGNUM_4000 is not set # CONFIG_MIPS_MALTA is not set +# CONFIG_MOMENCO_OCELOT is not set +# CONFIG_DDB5074 is not set +# CONFIG_DDB5476 is not set +# CONFIG_DDB5477 is not set +# CONFIG_NEC_OSPREY is not set +# CONFIG_NEC_EAGLE is not set +# CONFIG_NEC_KORVA is not set +# CONFIG_OLIVETTI_M700 is not set # CONFIG_NINO is not set -# CONFIG_SIBYTE_SB1250 is not set # CONFIG_PS2 is not set # CONFIG_CASIO_BE300 is not set CONFIG_CASIO_E15=y @@ -36,26 +54,14 @@ # CONFIG_IBM_WORKPAD is not set # CONFIG_CASIO_E55 is not set # CONFIG_VICTOR_MPC303 is not set -# CONFIG_MIPS_MAGNUM_4000 is not set -# CONFIG_MOMENCO_OCELOT is not set -# CONFIG_DDB5476 is not set -# CONFIG_DDB5477 is not set -# CONFIG_NEC_OSPREY is not set -# CONFIG_OLIVETTI_M700 is not set # CONFIG_SGI_IP22 is not set +# CONFIG_SIBYTE_SB1250 is not set # CONFIG_SNI_RM200_PCI is not set -# CONFIG_MIPS_ITE8172 is not set -# CONFIG_MIPS_IVR is not set -# CONFIG_MIPS_PB1000 is not set -# CONFIG_MIPS_PB1500 is not set -# CONFIG_MIPS_PB1100 is not set # CONFIG_TOSHIBA_JMR3927 is not set -# CONFIG_HP_LASERJET is not set +# CONFIG_MIPS_LXPB20K is not set # CONFIG_HIGHMEM is not set CONFIG_RWSEM_GENERIC_SPINLOCK=y # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set -# CONFIG_MCA is not set -# CONFIG_SBUS is not set CONFIG_CPU_VR41XX=y CONFIG_VR4111=y CONFIG_NEW_IRQ=y @@ -70,19 +76,13 @@ CONFIG_VR41XX_LED=y CONFIG_GPIO_LCD=y CONFIG_VR41XX_EXTEND_HIBERNATE=y -CONFIG_EISA=y - -# -# Loadable module support -# -CONFIG_MODULES=y -# CONFIG_MODVERSIONS is not set -CONFIG_KMOD=y +# CONFIG_MIPS_AU1000 is not set # # CPU selection # # CONFIG_CPU_R3000 is not set +# CONFIG_CPU_LX45XXX is not set # CONFIG_CPU_TX39XX is not set # CONFIG_CPU_R6000 is not set CONFIG_CPU_VR41XX=y @@ -112,8 +112,20 @@ # CONFIG_CPU_R5900_CONTEXT is not set # CONFIG_VR4131_CACHE_FIX is not set # CONFIG_VR4122_CLKSPEEDREG_FIX is not set +CONFIG_NET=y +# CONFIG_PCI is not set +CONFIG_EISA=y +# CONFIG_TC is not set +# CONFIG_MCA is not set +# CONFIG_SBUS is not set +# CONFIG_HOTPLUG is not set +# CONFIG_PCMCIA is not set +# CONFIG_HOTPLUG_PCI is not set +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y -CONFIG_ELF_KERNEL=y +# CONFIG_KCORE_AOUT is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=y @@ -124,19 +136,6 @@ CONFIG_PROC_GIUINFO=y # CONFIG_MOUNT_PROC is not set # CONFIG_CPU_FREQ is not set -CONFIG_NET=y -# CONFIG_HOTPLUG is not set -# CONFIG_PCMCIA is not set -# CONFIG_HOTPLUG_PCI is not set -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_SYSCTL=y - -# -# Plug and Play configuration -# -# CONFIG_PNP is not set -# CONFIG_ISAPNP is not set # # Memory Technology Devices (MTD) @@ -149,6 +148,12 @@ # CONFIG_PARPORT is not set # +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# # Block devices # # CONFIG_BLK_DEV_FD is not set @@ -275,15 +280,6 @@ # CONFIG_SCSI is not set # -# I2O device support -# -# CONFIG_I2O is not set -# CONFIG_I2O_BLOCK is not set -# CONFIG_I2O_LAN is not set -# CONFIG_I2O_SCSI is not set -# CONFIG_I2O_PROC is not set - -# # Network device support # CONFIG_NETDEVICES=y @@ -615,15 +611,6 @@ # CONFIG_FB_CYBER2000 is not set # CONFIG_FB_E1355 is not set # CONFIG_FB_MQ200 is not set -# CONFIG_FB_MATROX is not set -# CONFIG_FB_ATY is not set -# CONFIG_FB_RADEON is not set -# CONFIG_FB_ATY128 is not set -# CONFIG_FB_SIS is not set -# CONFIG_FB_3DFX is not set -# CONFIG_FB_VOODOO1 is not set -# CONFIG_FB_TRIDENT is not set -# CONFIG_FB_E1356 is not set # CONFIG_FB_IT8181 is not set # CONFIG_FB_SIMPLE is not set CONFIG_FB_HPCSFB=y |
From: Leblanc f. <fle...@us...> - 2002-06-13 12:57:36
|
Update of /cvsroot/linux-mips/linux/arch/mips/vr41xx/common In directory usw-pr-cvs1:/tmp/cvs-serv2868/arch/mips/vr41xx/common Modified Files: Makefile Removed Files: adif.c gpiolcd.c Log Message: Correct CONFIG_PM conflict in config.in and move misplaced files. Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/arch/mips/vr41xx/common/Makefile,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- Makefile 7 Mar 2002 09:15:16 -0000 1.6 +++ Makefile 13 Jun 2002 12:57:33 -0000 1.7 @@ -19,12 +19,8 @@ obj-$(CONFIG_VR41XX_TIME_C) += time.o -obj-$(CONFIG_ADIF) += adif.o obj-$(CONFIG_VR41XX_LED) += led.o obj-$(CONFIG_PROC_GIUINFO) += giuinfo.o obj-$(CONFIG_PM) += power.o -obj-$(CONFIG_GPIO_LCD) += gpiolcd.o - -#obj-$(CONFIG_BLK_DEV_IDE) += ide-vr41xx.o include $(TOPDIR)/Rules.make --- adif.c DELETED --- --- gpiolcd.c DELETED --- |
From: Leblanc f. <fle...@us...> - 2002-06-13 12:57:36
|
Update of /cvsroot/linux-mips/linux/drivers/char In directory usw-pr-cvs1:/tmp/cvs-serv2868/drivers/char Modified Files: Makefile Added Files: adif.c Log Message: Correct CONFIG_PM conflict in config.in and move misplaced files. --- NEW FILE: adif.c --- /* * linux/arch/mips/vr41xx/adif.c * * VR41xx Lvl A/D driver * * Parts Copyright (C) 2001 Chris AtLee <ca...@ca...> * Parts Copyright (C) 2001 Paul Jimenez <pj...@ag...> * Parts Copyright (C) 2001 Alexandre d'Alton <ale...@ya...> * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. */ #include <linux/module.h> #include <linux/delay.h> #include <linux/init.h> #include <linux/miscdevice.h> #include <linux/fs.h> #include <linux/major.h> #include <linux/sched.h> #include <asm/uaccess.h> #include <asm/system.h> #include <asm/irq.h> #include <asm/vr41xx.h> #define VR41XX_ADIF_MINOR 15 static wait_queue_head_t wait; static void adif_irq_handler (int irq, void *dev_id, struct pt_regs *regs) { wake_up_interruptible (&wait); } static int adif_open (struct inode *inode, struct file *file) { /* Readonly, sure they can all be open */ return 0; } static int adif_close (struct inode *inode, struct file *file) { return 0; } static ssize_t adif_read (struct file *file, char *buf, size_t count, loff_t * offset) { int original_stable; unsigned short adin[4]; ssize_t retval; unsigned long flags; unsigned int j; if (count < 4 * sizeof (short)) { printk ("adif: Invalid count(%d) specified (must be at least %d)\n", count, 4 * sizeof (short)); return 0; } /*** get battery readings here */ /** wait til we get into one of Standby, WaitPenTouch, or Interval state per VR4181.pdf 19.4 */ /* If the pen is down, we can't use the PIU, so we wait. */ cli(); while(*VR41XX_PIUCNTREG & 0x2000){ sti(); j = jiffies + 100; while(jiffies < j) schedule(); } save_and_cli (flags); /* We need to activate the PIU clocks. */ *VR41XX_CMUCLKMSK |= (VR41XX_CMUCLKMSK_MSKKIU| VR41XX_CMUCLKMSK_MSKSIU); barrier (); /* All these step are probably not needed, but they were for debugging */ *VR41XX_PIUCNTREG = 1; *VR41XX_PIUCNTREG = 0x2; /* Power up the PIU */ #define PIU_IN_STANDBY ((*VR41XX_PIUCNTREG & 0x1c00) == 0x0400) while (!PIU_IN_STANDBY) *VR41XX_PIUCNTREG &= ~0x2; /* Go in standby state */ barrier (); *VR41XX_PIUAMSKREG = 0xFF0F; /* Mask ADIN[0-2] & MIC pins */ barrier (); restore_flags (flags); /* set irq */ /* When we share IRQ we have to differentiate between two handlers for the same IRQ, that's why we put the address ow the wait queue as last argument to request_irq. */ if (retval = request_irq (VR41XX_IRQ_PIU, adif_irq_handler, SA_SHIRQ, "vr41xx_battery_level", &wait)) { /* restore PIUSTBLREG */ // *VR41XX_PIUSTBLREG = original_stable; printk ("adif: unable to request_irq (%d)\n", retval); return -retval; } barrier (); save_and_cli (flags); /* start the process */ *VR41XX_PIUASCNREG = 0x1; barrier (); *VR41XX_PIUCNTREG |= 0x0004; barrier (); restore_flags (flags); /* sleep until the value is ready */ interruptible_sleep_on (&wait); save_and_cli (flags); *VR41XX_PIUAMSKREG = 0xFFF0; *VR41XX_PIUASCNREG = 0x2; barrier (); /* read values */ adin[0] = *VR41XX_PIUAB0REG; adin[1] = *VR41XX_PIUAB1REG; adin[2] = *VR41XX_PIUAB2REG; adin[3] = *VR41XX_PIUAB3REG; /* Reset the PIU Controler in its default state */ *VR41XX_PIUCNTREG = 1; barrier(); *VR41XX_PIUCNTREG = 0x2; /* Power up the PIU */ barrier(); while (!PIU_IN_STANDBY) *VR41XX_PIUCNTREG &= ~0x2; /* Go in standby state */ *VR41XX_PIUCNTREG = 0x0322; barrier (); *VR41XX_PIUSIVLREG = 333; // set interval to .01 sec default *VR41XX_PIUSTBLREG = 0x10; barrier (); *VR41XX_MPIUINTREG = 0x007d; barrier (); *VR41XX_PIUCNTREG = 0x0326; // resume autoscan barrier (); /* Shut down the clocks. */ *VR41XX_CMUCLKMSK &= ~(VR41XX_CMUCLKMSK_MSKKIU | VR41XX_CMUCLKMSK_MSKSIU); restore_flags (flags); free_irq (VR41XX_IRQ_PIU, &wait); // printk ("adif: returning %d, %d, %d, %d\n", adin[0], adin[1], adin[2], // adin[3]); if (!access_ok(VERIFY_WRITE, buf, 8)) return -EFAULT; __put_user (adin[0], (short *) (buf)); __put_user (adin[1], (short *) (buf + 2)); __put_user (adin[2], (short *) (buf + 4)); __put_user (adin[3], (short *) (buf + 6)); return 4 * sizeof (short); } static struct file_operations adif_fops; static struct miscdevice adif_device; static int adif_init (void) { int retval; init_waitqueue_head (&wait); /* NULL out the data structure before filling it */ memset (&adif_fops, 0, sizeof (struct file_operations)); adif_fops.read = adif_read; adif_fops.open = adif_open; adif_fops.release = adif_close; /* NULL out the data structure before filling it */ memset (&adif_device, 0, sizeof (struct miscdevice)); adif_device.minor = VR41XX_ADIF_MINOR; adif_device.name = "adif"; adif_device.fops = &adif_fops; /* register it */ retval = misc_register (&adif_device); if (retval < 0) { printk ("Failed to register A/D interface driver\n"); return retval; } printk ("A/D interface driver registered on %i,%i\n", MISC_MAJOR, VR41XX_ADIF_MINOR); return 0; } static void adif_exit (void) { if (0 > misc_deregister (&adif_device)) printk ("Error unregistering A/D interface driver\n"); } module_init (adif_init); module_exit (adif_exit); Index: Makefile =================================================================== RCS file: /cvsroot/linux-mips/linux/drivers/char/Makefile,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- Makefile 31 May 2002 20:12:20 -0000 1.31 +++ Makefile 13 Jun 2002 12:57:33 -0000 1.32 @@ -270,6 +270,7 @@ obj-$(CONFIG_VR41XX_GPIO_BUTTONS) += gpiobtns.o obj-$(CONFIG_VR41XX_E105_BUTTONS) += e105btns.o obj-$(CONFIG_TOUCH_PANEL) += tpanel.o +obj-$(CONFIG_ADIF) += adif.o subdir-$(CONFIG_MWAVE) += mwave ifeq ($(CONFIG_MWAVE),y) |