maltalinux-cvs-patches
[Top] [All Lists]

CVS Update@linux-mips.org: malta

To: maltalinux-cvs-patches@linux-mips.org
Subject: CVS Update@linux-mips.org: malta
From: chris@linux-mips.org
Date: Thu, 28 Jul 2005 18:19:39 +0100
Reply-to: linux-mips@linux-mips.org
Sender: maltalinux-cvs-patches-bounce@linux-mips.org
CVSROOT:        /home/cvs
Module name:    malta
Changes by:     chris@ftp.linux-mips.org        05/07/28 18:19:38

Modified files:
        linux/arch/mips/mips-boards/generic: Tag: MaltaRef_2_6 init.c 
                                             pci.c 
        linux/arch/mips/mips-boards/malta: Tag: MaltaRef_2_6 malta_int.c 
        linux/include/asm-mips/mips-boards: Tag: MaltaRef_2_6 generic.h 

Log message:
        * include/asm-mips/mips-boards/generic.h
        (MIPS_REVISION_CORID_CORE_FPGA3): CoreFPGA3 support.
        
        * arch/mips/mips-boards/malta/malta_int.c (mips_pcibios_iack):
        CoreFPGA3 support.
        (get_int): Spurious interrupt detection doesn't work on SMP
        because it requires atomic access to the interrupt
        controller. Rely on the generic code to detect spurious interrupts.
        (corehi_irqdispatch): CoreFPGA3 support.
        (arch_init_irq): CoreFPGA3 support
        
        * arch/mips/mips-boards/generic/pci.c (pcibios_init): CoreFPGA3 support.
        
        * arch/mips/mips-boards/generic/init.c (prom_init): CoreFPGA3 support.

diff -urN malta/linux/arch/mips/mips-boards/generic/init.c 
malta/linux/arch/mips/mips-boards/generic/init.c
--- malta/linux/arch/mips/mips-boards/generic/init.c    2005/07/27 14:25:20     
1.17.1000.4
+++ malta/linux/arch/mips/mips-boards/generic/init.c    2005/07/28 17:19:38     
1.17.1000.5
@@ -336,6 +336,7 @@
 
        case MIPS_REVISION_CORID_CORE_MSC:
        case MIPS_REVISION_CORID_CORE_FPGA2:
+       case MIPS_REVISION_CORID_CORE_FPGA3:
        case MIPS_REVISION_CORID_CORE_EMUL_MSC:
                _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 
0x2000); 
 
diff -urN malta/linux/arch/mips/mips-boards/generic/pci.c 
malta/linux/arch/mips/mips-boards/generic/pci.c
--- malta/linux/arch/mips/mips-boards/generic/pci.c     2005/06/21 13:24:12     
1.26.1000.3
+++ malta/linux/arch/mips/mips-boards/generic/pci.c     2005/07/28 17:19:38     
1.26.1000.4
@@ -197,6 +197,7 @@
 
        case MIPS_REVISION_CORID_CORE_MSC:
        case MIPS_REVISION_CORID_CORE_FPGA2:
+       case MIPS_REVISION_CORID_CORE_FPGA3:
        case MIPS_REVISION_CORID_CORE_EMUL_MSC:
                /* Set up resource ranges from the controller's registers.  */
                MSC_READ(MSC01_PCI_SC2PMBASL, start);
diff -urN malta/linux/arch/mips/mips-boards/malta/malta_int.c 
malta/linux/arch/mips/mips-boards/malta/malta_int.c
--- malta/linux/arch/mips/mips-boards/malta/malta_int.c 2005/06/21 13:24:13     
1.20.1000.3
+++ malta/linux/arch/mips/mips-boards/malta/malta_int.c 2005/07/28 17:19:38     
1.20.1000.4
@@ -57,6 +57,7 @@
        switch(mips_revision_corid) {
        case MIPS_REVISION_CORID_CORE_MSC:
        case MIPS_REVISION_CORID_CORE_FPGA2:
+       case MIPS_REVISION_CORID_CORE_FPGA3:
        case MIPS_REVISION_CORID_CORE_EMUL_MSC:
                MSC_READ(MSC01_PCI_IACK, irq);
                irq &= 0xff;
@@ -103,22 +104,10 @@
        irq = mips_pcibios_iack();
 
        /*
-        * IRQ7 is used to detect spurious interrupts.
-        * The interrupt acknowledge cycle returns IRQ7, if no
-        * interrupts is requested.
-        * We can differentiate between this situation and a
-        * "Normal" IRQ7 by reading the ISR.
+        * The only way we can decide if an interrupt is spurious
+        * is by checking the 8259 registers.  This needs a spinlock
+        * on an SMP system,  so leave it up to the generic code...
         */
-       if (irq == 7)
-       {
-               outb(PIIX4_OCW3_SEL | PIIX4_OCW3_ISR,
-                    PIIX4_ICTLR1_OCW3);
-               if (!(inb(PIIX4_ICTLR1_OCW3) & (1 << 7))) {
-                       irq = -1; /* Spurious interrupt */
-                       printk("We got a spurious interrupt from PIIX4.\n");
-                       atomic_inc(&irq_err_count);
-               }
-       }
 
        spin_unlock_irqrestore(&mips_irq_lock, flags);
 
@@ -153,6 +142,7 @@
         switch(mips_revision_corid) {
         case MIPS_REVISION_CORID_CORE_MSC:
         case MIPS_REVISION_CORID_CORE_FPGA2:
+        case MIPS_REVISION_CORID_CORE_FPGA3:
         case MIPS_REVISION_CORID_CORE_EMUL_MSC:
                 ll_msc_irq(regs);
                 break;
@@ -233,6 +223,7 @@
         switch(mips_revision_corid) {
         case MIPS_REVISION_CORID_CORE_MSC:
         case MIPS_REVISION_CORID_CORE_FPGA2:
+        case MIPS_REVISION_CORID_CORE_FPGA3:
         case MIPS_REVISION_CORID_CORE_EMUL_MSC:
                if (cpu_has_veic)
                        init_msc_irqs (MSC01E_INT_BASE, msc_eicirqmap, 
msc_nr_eicirqs);
diff -urN malta/linux/include/asm-mips/mips-boards/generic.h 
malta/linux/include/asm-mips/mips-boards/generic.h
--- malta/linux/include/asm-mips/mips-boards/generic.h  2004/01/20 13:04:44     
1.6
+++ malta/linux/include/asm-mips/mips-boards/generic.h  2005/07/28 17:19:38     
1.6.1000.1
@@ -66,6 +66,7 @@
 #define MIPS_REVISION_CORID_CORE_EMUL      6
 #define MIPS_REVISION_CORID_CORE_FPGA2     7
 #define MIPS_REVISION_CORID_CORE_FPGAR2    8
+#define MIPS_REVISION_CORID_CORE_FPGA3     9
 
 /**** Artificial corid defines ****/
 /*

<Prev in Thread] Current Thread [Next in Thread>