]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/pci/irq.c
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes...
[linux-2.6-omap-h63xx.git] / arch / x86 / pci / irq.c
index c422e10337be779f2841f14e9b8f7ace8798aa37..6a06a2eb05973c5e2f129de7a9d1bbcdefc6564a 100644 (file)
@@ -102,8 +102,7 @@ static struct irq_routing_table * __init pirq_find_routing_table(void)
                        return rt;
                printk(KERN_WARNING "PCI: PIRQ table NOT found at pirqaddr\n");
        }
-       for (addr = (u8 *) __va(0xf0000); addr < (u8 *) __va(0x100000);
-               addr += 16) {
+       for (addr = (u8 *) __va(0xf0000); addr < (u8 *) __va(0x100000); addr += 16) {
                rt = pirq_check_routing_table(addr);
                if (rt)
                        return rt;
@@ -125,17 +124,14 @@ static void __init pirq_peer_trick(void)
        struct irq_info *e;
 
        memset(busmap, 0, sizeof(busmap));
-       for (i = 0; i < (rt->size - sizeof(struct irq_routing_table)) /
-               sizeof(struct irq_info); i++) {
+       for (i = 0; i < (rt->size - sizeof(struct irq_routing_table)) / sizeof(struct irq_info); i++) {
                e = &rt->slots[i];
 #ifdef DEBUG
                {
                        int j;
-                       DBG(KERN_DEBUG "%02x:%02x slot=%02x", e->bus,
-                               e->devfn/8, e->slot);
+                       DBG(KERN_DEBUG "%02x:%02x slot=%02x", e->bus, e->devfn/8, e->slot);
                        for (j = 0; j < 4; j++)
-                               DBG(" %d:%02x/%04x", j, e->irq[j].link,
-                                       e->irq[j].bitmap);
+                               DBG(" %d:%02x/%04x", j, e->irq[j].link, e->irq[j].bitmap);
                        DBG("\n");
                }
 #endif
@@ -180,8 +176,7 @@ void eisa_set_level_irq(unsigned int irq)
  * Common IRQ routing practice: nibbles in config space,
  * offset by some magic constant.
  */
-static unsigned int
-read_config_nybble(struct pci_dev *router, unsigned offset, unsigned nr)
+static unsigned int read_config_nybble(struct pci_dev *router, unsigned offset, unsigned nr)
 {
        u8 x;
        unsigned reg = offset + (nr >> 1);
@@ -208,18 +203,15 @@ static void write_config_nybble(struct pci_dev *router, unsigned offset,
  */
 static int pirq_ali_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
 {
-       static const unsigned char irqmap[16] = { 0, 9, 3, 10, 4, 5, 7, 6, 1,
-               11, 0, 12, 0, 14, 0, 15 };
+       static const unsigned char irqmap[16] = { 0, 9, 3, 10, 4, 5, 7, 6, 1, 11, 0, 12, 0, 14, 0, 15 };
 
        WARN_ON_ONCE(pirq > 16);
        return irqmap[read_config_nybble(router, 0x48, pirq-1)];
 }
 
-static int
-pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_ali_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
-       static const unsigned char irqmap[16] = { 0, 8, 0, 2, 4, 5, 7, 6, 0, 1,
-               3, 9, 11, 0, 13, 15 };
+       static const unsigned char irqmap[16] = { 0, 8, 0, 2, 4, 5, 7, 6, 0, 1, 3, 9, 11, 0, 13, 15 };
        unsigned int val = irqmap[irq];
 
        WARN_ON_ONCE(pirq > 16);
@@ -242,8 +234,7 @@ static int pirq_piix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return (x < 16) ? x : 0;
 }
 
-static int
-pirq_piix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_piix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        pci_write_config_byte(router, pirq, irq);
        return 1;
@@ -259,8 +250,7 @@ static int pirq_via_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return read_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq);
 }
 
-static int
-pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq);
        return 1;
@@ -271,8 +261,7 @@ pirq_via_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
  * but without the ugly irq number munging.
  * However, for 82C586, nibble map is different .
  */
-static int
-pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
+static int pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
 {
        static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
 
@@ -280,8 +269,7 @@ pirq_via586_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return read_config_nybble(router, 0x55, pirqmap[pirq-1]);
 }
 
-static int
-pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_via586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        static const unsigned int pirqmap[5] = { 3, 2, 5, 1, 1 };
 
@@ -303,8 +291,7 @@ static int pirq_ite_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return read_config_nybble(router, 0x43, pirqmap[pirq-1]);
 }
 
-static int
-pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_ite_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        static const unsigned char pirqmap[4] = { 1, 0, 2, 3 };
 
@@ -322,8 +309,7 @@ static int pirq_opti_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return read_config_nybble(router, 0xb8, pirq >> 4);
 }
 
-static int
-pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_opti_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        write_config_nybble(router, 0xb8, pirq >> 4, irq);
        return 1;
@@ -339,8 +325,7 @@ static int pirq_cyrix_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return read_config_nybble(router, 0x5C, (pirq-1)^1);
 }
 
-static int
-pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_cyrix_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        write_config_nybble(router, 0x5C, (pirq-1)^1, irq);
        return 1;
@@ -423,8 +408,7 @@ static int pirq_sis_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return (x & PIRQ_SIS_IRQ_DISABLE) ? 0 : (x & PIRQ_SIS_IRQ_MASK);
 }
 
-static int
-pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_sis_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        u8 x;
        int reg;
@@ -458,8 +442,7 @@ static int pirq_vlsi_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
        return read_config_nybble(router, 0x74, pirq-1);
 }
 
-static int
-pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        WARN_ON_ONCE(pirq >= 9);
        if (pirq > 8) {
@@ -481,8 +464,7 @@ pirq_vlsi_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
  * 0x00 for ACPI (SCI), 0x01 for USB, 0x02 for IDE0, 0x04 for IDE1,
  * and 0x03 for SMBus.
  */
-static int
-pirq_serverworks_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
+static int pirq_serverworks_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
 {
        outb(pirq, 0xc00);
        return inb(0xc01) & 0xf;
@@ -504,24 +486,20 @@ static int pirq_serverworks_set(struct pci_dev *router, struct pci_dev *dev,
  * offset 0x56 0-3 PIRQA  4-7  PIRQB
  * offset 0x57 0-3 PIRQC  4-7  PIRQD
  */
-static int
-pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
+static int pirq_amd756_get(struct pci_dev *router, struct pci_dev *dev, int pirq)
 {
        u8 irq;
        irq = 0;
        if (pirq <= 4)
                irq = read_config_nybble(router, 0x56, pirq - 1);
-       printk(KERN_INFO
-               "AMD756: dev %04x:%04x, router pirq : %d get irq : %2d\n",
+       printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d get irq : %2d\n",
                dev->vendor, dev->device, pirq, irq);
        return irq;
 }
 
-static int
-pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_amd756_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
-       printk(KERN_INFO
-               "AMD756: dev %04x:%04x, router pirq : %d SET irq : %2d\n",
+       printk(KERN_INFO "AMD756: dev %04x:%04x, router pirq : %d SET irq : %2d\n",
                dev->vendor, dev->device, pirq, irq);
        if (pirq <= 4)
                write_config_nybble(router, 0x56, pirq - 1, irq);
@@ -550,8 +528,7 @@ static int pirq_pico_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
 
 #ifdef CONFIG_PCI_BIOS
 
-static int
-pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
+static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 {
        struct pci_dev *bridge;
        int pin = pci_get_interrupt_pin(dev, &bridge);
@@ -560,14 +537,11 @@ pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq)
 
 #endif
 
-static __init int
-intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        static struct pci_device_id __initdata pirq_440gx[] = {
-               { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
-                       PCI_DEVICE_ID_INTEL_82443GX_0) },
-               { PCI_DEVICE(PCI_VENDOR_ID_INTEL,
-                       PCI_DEVICE_ID_INTEL_82443GX_2) },
+               { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0) },
+               { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_2) },
                { },
        };
 
@@ -677,8 +651,7 @@ static __init int via_router_probe(struct irq_router *r,
        return 0;
 }
 
-static __init int
-vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int vlsi_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_VLSI_82C534:
@@ -705,8 +678,7 @@ static __init int serverworks_router_probe(struct irq_router *r,
        return 0;
 }
 
-static __init int
-sis_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int sis_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        if (device != PCI_DEVICE_ID_SI_503)
                return 0;
@@ -717,8 +689,7 @@ sis_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
        return 1;
 }
 
-static __init int
-cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_CYRIX_5520:
@@ -730,8 +701,7 @@ cyrix_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
        return 0;
 }
 
-static __init int
-opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_OPTI_82C700:
@@ -743,8 +713,7 @@ opti_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
        return 0;
 }
 
-static __init int
-ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_ITE_IT8330G_0:
@@ -756,8 +725,7 @@ ite_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
        return 0;
 }
 
-static __init int
-ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_AL_M1533:
@@ -771,8 +739,7 @@ ali_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
        return 0;
 }
 
-static __init int
-amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_AMD_VIPER_740B:
@@ -792,8 +759,7 @@ amd_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
        return 1;
 }
 
-static __init int
-pico_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
+static __init int pico_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
        switch (device) {
        case PCI_DEVICE_ID_PICOPOWER_PT86C523:
@@ -1030,9 +996,8 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
                        (!(pci_probe & PCI_USE_PIRQ_MASK) || \
                        ((1 << dev2->irq) & mask))) {
 #ifndef CONFIG_PCI_MSI
-                               printk(KERN_INFO
-                                       "IRQ routing conflict for %s, have irq %d, want irq %d\n",
-                                       pci_name(dev2), dev2->irq, irq);
+                               printk(KERN_INFO "IRQ routing conflict for %s, have irq %d, want irq %d\n",
+                                      pci_name(dev2), dev2->irq, irq);
 #endif
                                continue;
                        }
@@ -1098,23 +1063,18 @@ static void __init pcibios_fixup_irqs(void)
         * parent slot, and pin number. The SMP code detects such bridged
         * busses itself so we should get into this branch reliably.
         */
-                               if (irq < 0 && dev->bus->parent) {
-                                       /* go back to the bridge */
+                               if (irq < 0 && dev->bus->parent) { /* go back to the bridge */
                                        struct pci_dev *bridge = dev->bus->self;
 
                                        pin = (pin + PCI_SLOT(dev->devfn)) % 4;
                                        irq = IO_APIC_get_PCI_irq_vector(bridge->bus->number,
-                                                       PCI_SLOT(bridge->devfn),
-                                                       pin);
+                                                       PCI_SLOT(bridge->devfn), pin);
                                        if (irq >= 0)
-                                               printk(KERN_WARNING
-                                                       "PCI: using PPB %s[%c] to get irq %d\n",
-                                                       pci_name(bridge),
-                                                       'A' + pin, irq);
+                                               printk(KERN_WARNING "PCI: using PPB %s[%c] to get irq %d\n",
+                                                       pci_name(bridge), 'A' + pin, irq);
                                }
                                if (irq >= 0) {
-                                       printk(KERN_INFO
-                                               "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
+                                       printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n",
                                                pci_name(dev), 'A' + pin, irq);
                                        dev->irq = irq;
                                }
@@ -1180,7 +1140,7 @@ static struct dmi_system_id __initdata pciirq_dmi_table[] = {
        { }
 };
 
-static int __init pcibios_irq_init(void)
+int __init pcibios_irq_init(void)
 {
        DBG(KERN_DEBUG "PCI: IRQ init\n");
 
@@ -1218,9 +1178,6 @@ static int __init pcibios_irq_init(void)
        return 0;
 }
 
-subsys_initcall(pcibios_irq_init);
-
-
 static void pirq_penalize_isa_irq(int irq, int active)
 {
        /*
@@ -1259,19 +1216,15 @@ static int pirq_enable_irq(struct pci_dev *dev)
                if (io_apic_assign_pci_irqs) {
                        int irq;
 
-                       irq = IO_APIC_get_PCI_irq_vector(dev->bus->number,
-                               PCI_SLOT(dev->devfn), pin);
+                       irq = IO_APIC_get_PCI_irq_vector(dev->bus->number, PCI_SLOT(dev->devfn), pin);
                        /*
-                        * Busses behind bridges are typically not
-                        * listed in the MP-table.  In this case we have
-                        * to look up the IRQ based on the parent bus,
-                        * parent slot, and pin number. The SMP code
-                        * detects such bridged busses itself so we
-                        * should get into this branch reliably.
+                        * Busses behind bridges are typically not listed in the MP-table.
+                        * In this case we have to look up the IRQ based on the parent bus,
+                        * parent slot, and pin number. The SMP code detects such bridged
+                        * busses itself so we should get into this branch reliably.
                         */
                        temp_dev = dev;
-                       while (irq < 0 && dev->bus->parent) {
-                               /* go back to the bridge */
+                       while (irq < 0 && dev->bus->parent) { /* go back to the bridge */
                                struct pci_dev *bridge = dev->bus->self;
 
                                pin = (pin + PCI_SLOT(dev->devfn)) % 4;