aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDavid Shaohua Li <shaohua.li@intel.com>2005-04-01 00:07:31 -0500
committerLen Brown <len.brown@intel.com>2005-07-12 00:03:30 -0400
commitc9c3e457de24cca2ca688fa397d93a241f472048 (patch)
tree570b7a07f9c6f570341481500a2bff21c1328d8d /drivers
parentacf05f4b7f558051ea0028e8e617144123650272 (diff)
[ACPI] PNPACPI vs sound IRQ
http://bugme.osdl.org/show_bug.cgi?id=4016 Written-by: David Shaohua Li <shaohua.li@intel.com> Acked-by: Adam Belay <abelay@novell.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/pci_link.c7
-rw-r--r--drivers/pnp/pnpacpi/rsparser.c4
-rw-r--r--drivers/pnp/pnpbios/rsparser.c2
-rw-r--r--drivers/pnp/resource.c2
4 files changed, 9 insertions, 6 deletions
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index f2271173bbd5..6ad0e77df9b3 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -804,9 +804,12 @@ static int __init acpi_irq_penalty_update(char *str, int used)
804 * There is no ISA_POSSIBLE weight, so we simply use 804 * There is no ISA_POSSIBLE weight, so we simply use
805 * the (small) PCI_USING penalty. 805 * the (small) PCI_USING penalty.
806 */ 806 */
807void acpi_penalize_isa_irq(int irq) 807void acpi_penalize_isa_irq(int irq, int active)
808{ 808{
809 acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; 809 if (active)
810 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED;
811 else
812 acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING;
810} 813}
811 814
812/* 815/*
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index ae3819ad7cf4..75575f6c349c 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -160,7 +160,7 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
160 acpi_register_gsi(res->data.irq.interrupts[0], 160 acpi_register_gsi(res->data.irq.interrupts[0],
161 res->data.irq.edge_level, 161 res->data.irq.edge_level,
162 res->data.irq.active_high_low)); 162 res->data.irq.active_high_low));
163 pcibios_penalize_isa_irq(res->data.irq.interrupts[0]); 163 pcibios_penalize_isa_irq(res->data.irq.interrupts[0], 1);
164 } 164 }
165 break; 165 break;
166 166
@@ -171,7 +171,7 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
171 acpi_register_gsi(res->data.extended_irq.interrupts[0], 171 acpi_register_gsi(res->data.extended_irq.interrupts[0],
172 res->data.extended_irq.edge_level, 172 res->data.extended_irq.edge_level,
173 res->data.extended_irq.active_high_low)); 173 res->data.extended_irq.active_high_low));
174 pcibios_penalize_isa_irq(res->data.extended_irq.interrupts[0]); 174 pcibios_penalize_isa_irq(res->data.extended_irq.interrupts[0], 1);
175 } 175 }
176 break; 176 break;
177 case ACPI_RSTYPE_DMA: 177 case ACPI_RSTYPE_DMA:
diff --git a/drivers/pnp/pnpbios/rsparser.c b/drivers/pnp/pnpbios/rsparser.c
index 79bce7b75740..9001b6f0204d 100644
--- a/drivers/pnp/pnpbios/rsparser.c
+++ b/drivers/pnp/pnpbios/rsparser.c
@@ -64,7 +64,7 @@ pnpbios_parse_allocated_irqresource(struct pnp_resource_table * res, int irq)
64 } 64 }
65 res->irq_resource[i].start = 65 res->irq_resource[i].start =
66 res->irq_resource[i].end = (unsigned long) irq; 66 res->irq_resource[i].end = (unsigned long) irq;
67 pcibios_penalize_isa_irq(irq); 67 pcibios_penalize_isa_irq(irq, 1);
68 } 68 }
69} 69}
70 70
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c
index 2d1322dd7e19..887ad8939349 100644
--- a/drivers/pnp/resource.c
+++ b/drivers/pnp/resource.c
@@ -102,7 +102,7 @@ int pnp_register_irq_resource(struct pnp_option *option, struct pnp_irq *data)
102 102
103 for (i = 0; i < 16; i++) 103 for (i = 0; i < 16; i++)
104 if (test_bit(i, data->map)) 104 if (test_bit(i, data->map))
105 pcibios_penalize_isa_irq(i); 105 pcibios_penalize_isa_irq(i, 0);
106 } 106 }
107#endif 107#endif
108 return 0; 108 return 0;