Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / ppc / platforms / pplus.c
index 7922346..de2761e 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * arch/ppc/platforms/pplus.c
- *
  * Board and PCI setup routines for MCG PowerPlus
  *
  * Author: Randy Vinson <rvinson@mvista.com>
@@ -22,7 +20,6 @@
 #include <linux/ioport.h>
 #include <linux/console.h>
 #include <linux/pci.h>
-#include <linux/irq.h>
 #include <linux/ide.h>
 #include <linux/seq_file.h>
 #include <linux/root_dev.h>
@@ -359,7 +356,7 @@ void __init pplus_pib_init(void)
         * Perform specific configuration for the Via Tech or
         * or Winbond PCI-ISA-Bridge part.
         */
-       if ((dev = pci_find_device(PCI_VENDOR_ID_VIA,
+       if ((dev = pci_get_device(PCI_VENDOR_ID_VIA,
                                   PCI_DEVICE_ID_VIA_82C586_1, dev))) {
                /*
                 * PPCBUG does not set the enable bits
@@ -371,7 +368,7 @@ void __init pplus_pib_init(void)
                pci_write_config_byte(dev, 0x40, reg);
        }
 
-       if ((dev = pci_find_device(PCI_VENDOR_ID_VIA,
+       if ((dev = pci_get_device(PCI_VENDOR_ID_VIA,
                                   PCI_DEVICE_ID_VIA_82C586_2,
                                   dev)) && (dev->devfn = 0x5a)) {
                /* Force correct USB interrupt */
@@ -379,7 +376,7 @@ void __init pplus_pib_init(void)
                pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
        }
 
-       if ((dev = pci_find_device(PCI_VENDOR_ID_WINBOND,
+       if ((dev = pci_get_device(PCI_VENDOR_ID_WINBOND,
                                   PCI_DEVICE_ID_WINBOND_83C553, dev))) {
                /* Clear PCI Interrupt Routing Control Register. */
                short_reg = 0x0000;
@@ -389,7 +386,7 @@ void __init pplus_pib_init(void)
                pci_write_config_byte(dev, 0x43, reg);
        }
 
-       if ((dev = pci_find_device(PCI_VENDOR_ID_WINBOND,
+       if ((dev = pci_get_device(PCI_VENDOR_ID_WINBOND,
                                   PCI_DEVICE_ID_WINBOND_82C105, dev))) {
                /*
                 * Disable LEGIRQ mode so PCI INTS are routed
@@ -401,6 +398,7 @@ void __init pplus_pib_init(void)
                dev->irq = 14;
                pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
        }
+       pci_dev_put(dev);
 }
 
 void __init pplus_set_VIA_IDE_legacy(void)
@@ -646,14 +644,6 @@ static void pplus_power_off(void)
        pplus_halt();
 }
 
-static unsigned int pplus_irq_canonicalize(u_int irq)
-{
-       if (irq == 2)
-               return 9;
-       else
-               return irq;
-}
-
 static void __init pplus_init_IRQ(void)
 {
        int i;
@@ -673,10 +663,7 @@ static void __init pplus_init_IRQ(void)
                ppc_md.get_irq = openpic_get_irq;
        }
 
-       for (i = 0; i < NUM_8259_INTERRUPTS; i++)
-               irq_desc[i].handler = &i8259_pic;
-
-       i8259_init(0);
+       i8259_init(0, 0);
 
        if (ppc_md.progress)
                ppc_md.progress("init_irq: exit", 0);
@@ -848,10 +835,10 @@ static __inline__ void pplus_set_bat(void)
        mb();
 
        /* setup DBATs */
-       mtspr(DBAT2U, 0x80001ffe);
-       mtspr(DBAT2L, 0x8000002a);
-       mtspr(DBAT3U, 0xf0001ffe);
-       mtspr(DBAT3L, 0xf000002a);
+       mtspr(SPRN_DBAT2U, 0x80001ffe);
+       mtspr(SPRN_DBAT2L, 0x8000002a);
+       mtspr(SPRN_DBAT3U, 0xf0001ffe);
+       mtspr(SPRN_DBAT3L, 0xf000002a);
 
        /* wait for updates */
        mb();
@@ -872,10 +859,10 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
        ISA_DMA_THRESHOLD = 0x00ffffff;
        DMA_MODE_READ = 0x44;
        DMA_MODE_WRITE = 0x48;
+       ppc_do_canonicalize_irqs = 1;
 
        ppc_md.setup_arch = pplus_setup_arch;
        ppc_md.show_cpuinfo = pplus_show_cpuinfo;
-       ppc_md.irq_canonicalize = pplus_irq_canonicalize;
        ppc_md.init_IRQ = pplus_init_IRQ;
        /* this gets changed later on if we have an OpenPIC -- Cort */
        ppc_md.get_irq = i8259_irq;
@@ -911,6 +898,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
        ppc_md.kgdb_map_scc = gen550_kgdb_map_scc;
 #endif
 #ifdef CONFIG_SMP
-       ppc_md.smp_ops = &pplus_smp_ops;
+       smp_ops = &pplus_smp_ops;
 #endif                         /* CONFIG_SMP */
 }