]> git.hungrycats.org Git - linux/commitdiff
[ACPI] PCI interrupt link routing (Luming Yu)
authorLen Brown <len.brown@intel.com>
Thu, 25 Mar 2004 12:40:31 +0000 (07:40 -0500)
committerLen Brown <lenb@dhcppc3.>
Thu, 25 Mar 2004 12:40:31 +0000 (07:40 -0500)
use _PRS to determine resource type for _SRS
fixes HP Proliant servers
http://bugzilla.kernel.org/show_bug.cgi?id=1590

drivers/acpi/pci_link.c

index 9994ee25650b402b134809ab4d86300ca35bb30c..7c39a4e8d222fa279412fae4f1d17bbedbce0a1b 100644 (file)
@@ -72,6 +72,7 @@ struct acpi_pci_link_irq {
        u8                      edge_level;             /* All IRQs */
        u8                      active_high_low;        /* All IRQs */
        u8                      setonboot;
+       u8                      resource_type;
        u8                      possible_count;
        u8                      possible[ACPI_PCI_LINK_MAX_POSSIBLE];
 };
@@ -123,6 +124,7 @@ acpi_pci_link_check_possible (
                }
                link->irq.edge_level = p->edge_level;
                link->irq.active_high_low = p->active_high_low;
+               link->irq.resource_type = ACPI_RSTYPE_IRQ;
                break;
        }
        case ACPI_RSTYPE_EXT_IRQ:
@@ -143,6 +145,7 @@ acpi_pci_link_check_possible (
                }
                link->irq.edge_level = p->edge_level;
                link->irq.active_high_low = p->active_high_low;
+               link->irq.resource_type = ACPI_RSTYPE_EXT_IRQ;
                break;
        }
        default:
@@ -342,13 +345,18 @@ acpi_pci_link_set (
                }
        }
 
+       resource_type = link->irq.resource_type;
+
+       if (resource_type != ACPI_RSTYPE_IRQ &&
+                       resource_type != ACPI_RSTYPE_EXT_IRQ){
        /* If IRQ<=15, first try with a "normal" IRQ descriptor. If that fails, try with
         * an extended one */
-       if (irq <= 15) {
-               resource_type = ACPI_RSTYPE_IRQ;
-       } else {
-               resource_type = ACPI_RSTYPE_EXT_IRQ;
-       }
+               if (irq <= 15) {
+                       resource_type = ACPI_RSTYPE_IRQ;
+               } else {
+                       resource_type = ACPI_RSTYPE_EXT_IRQ;
+               }
+       } 
 
 retry_programming: