aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorSinan Kaya <okaya@codeaurora.org>2016-04-17 13:36:54 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-05-04 19:10:31 -0400
commit5c5087a5539083305f1199f09ac2e7f14d855ff3 (patch)
treeb74b7487e6c204c1c13c478a89f73fe97465bd8e /drivers/acpi
parent103544d86976338057d6a91f721b49d3acc7df7f (diff)
ACPI,PCI,IRQ: reduce static IRQ array size to 16
Now that the supported number of PCI IRQs are no longer capped with 256, renaming the static array to support ISA IRQs only and removing the MAX_IRQS constant. Signed-off-by: Sinan Kaya <okaya@codeaurora.org> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/pci_link.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index cc0ba1651db1..12ea78495b47 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -438,8 +438,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
438 * enabled system. 438 * enabled system.
439 */ 439 */
440 440
441#define ACPI_MAX_IRQS 256 441#define ACPI_MAX_ISA_IRQS 16
442#define ACPI_MAX_ISA_IRQ 16
443 442
444#define PIRQ_PENALTY_PCI_POSSIBLE (16*16) 443#define PIRQ_PENALTY_PCI_POSSIBLE (16*16)
445#define PIRQ_PENALTY_PCI_USING (16*16*16) 444#define PIRQ_PENALTY_PCI_USING (16*16*16)
@@ -447,7 +446,7 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
447#define PIRQ_PENALTY_ISA_USED (16*16*16*16*16) 446#define PIRQ_PENALTY_ISA_USED (16*16*16*16*16)
448#define PIRQ_PENALTY_ISA_ALWAYS (16*16*16*16*16*16) 447#define PIRQ_PENALTY_ISA_ALWAYS (16*16*16*16*16*16)
449 448
450static int acpi_irq_penalty[ACPI_MAX_IRQS] = { 449static int acpi_isa_irq_penalty[ACPI_MAX_ISA_IRQS] = {
451 PIRQ_PENALTY_ISA_ALWAYS, /* IRQ0 timer */ 450 PIRQ_PENALTY_ISA_ALWAYS, /* IRQ0 timer */
452 PIRQ_PENALTY_ISA_ALWAYS, /* IRQ1 keyboard */ 451 PIRQ_PENALTY_ISA_ALWAYS, /* IRQ1 keyboard */
453 PIRQ_PENALTY_ISA_ALWAYS, /* IRQ2 cascade */ 452 PIRQ_PENALTY_ISA_ALWAYS, /* IRQ2 cascade */
@@ -500,8 +499,8 @@ static int acpi_irq_get_penalty(int irq)
500{ 499{
501 int penalty = 0; 500 int penalty = 0;
502 501
503 if (irq < ACPI_MAX_ISA_IRQ) 502 if (irq < ACPI_MAX_ISA_IRQS)
504 penalty += acpi_irq_penalty[irq]; 503 penalty += acpi_isa_irq_penalty[irq];
505 504
506 /* 505 /*
507 * Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict 506 * Penalize IRQ used by ACPI SCI. If ACPI SCI pin attributes conflict
@@ -541,14 +540,15 @@ int __init acpi_irq_penalty_init(void)
541 link->irq.possible_count; 540 link->irq.possible_count;
542 541
543 for (i = 0; i < link->irq.possible_count; i++) { 542 for (i = 0; i < link->irq.possible_count; i++) {
544 if (link->irq.possible[i] < ACPI_MAX_ISA_IRQ) 543 if (link->irq.possible[i] < ACPI_MAX_ISA_IRQS)
545 acpi_irq_penalty[link->irq. 544 acpi_isa_irq_penalty[link->irq.
546 possible[i]] += 545 possible[i]] +=
547 penalty; 546 penalty;
548 } 547 }
549 548
550 } else if (link->irq.active) { 549 } else if (link->irq.active &&
551 acpi_irq_penalty[link->irq.active] += 550 (link->irq.active < ACPI_MAX_ISA_IRQS)) {
551 acpi_isa_irq_penalty[link->irq.active] +=
552 PIRQ_PENALTY_PCI_POSSIBLE; 552 PIRQ_PENALTY_PCI_POSSIBLE;
553 } 553 }
554 } 554 }
@@ -831,7 +831,7 @@ static void acpi_pci_link_remove(struct acpi_device *device)
831} 831}
832 832
833/* 833/*
834 * modify acpi_irq_penalty[] from cmdline 834 * modify acpi_isa_irq_penalty[] from cmdline
835 */ 835 */
836static int __init acpi_irq_penalty_update(char *str, int used) 836static int __init acpi_irq_penalty_update(char *str, int used)
837{ 837{
@@ -840,24 +840,24 @@ static int __init acpi_irq_penalty_update(char *str, int used)
840 for (i = 0; i < 16; i++) { 840 for (i = 0; i < 16; i++) {
841 int retval; 841 int retval;
842 int irq; 842 int irq;
843 int new_penalty;
843 844
844 retval = get_option(&str, &irq); 845 retval = get_option(&str, &irq);
845 846
846 if (!retval) 847 if (!retval)
847 break; /* no number found */ 848 break; /* no number found */
848 849
849 if (irq < 0) 850 /* see if this is a ISA IRQ */
850 continue; 851 if ((irq < 0) || (irq >= ACPI_MAX_ISA_IRQS))
851
852 if (irq >= ARRAY_SIZE(acpi_irq_penalty))
853 continue; 852 continue;
854 853
855 if (used) 854 if (used)
856 acpi_irq_penalty[irq] = acpi_irq_get_penalty(irq) + 855 new_penalty = acpi_irq_get_penalty(irq) +
857 PIRQ_PENALTY_ISA_USED; 856 PIRQ_PENALTY_ISA_USED;
858 else 857 else
859 acpi_irq_penalty[irq] = 0; 858 new_penalty = 0;
860 859
860 acpi_isa_irq_penalty[irq] = new_penalty;
861 if (retval != 2) /* no next number */ 861 if (retval != 2) /* no next number */
862 break; 862 break;
863 } 863 }
@@ -873,14 +873,14 @@ static int __init acpi_irq_penalty_update(char *str, int used)
873 */ 873 */
874void acpi_penalize_isa_irq(int irq, int active) 874void acpi_penalize_isa_irq(int irq, int active)
875{ 875{
876 if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty)) 876 if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty)))
877 acpi_irq_penalty[irq] = acpi_irq_get_penalty(irq) + 877 acpi_isa_irq_penalty[irq] = acpi_irq_get_penalty(irq) +
878 active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING; 878 active ? PIRQ_PENALTY_ISA_USED : PIRQ_PENALTY_PCI_USING;
879} 879}
880 880
881bool acpi_isa_irq_available(int irq) 881bool acpi_isa_irq_available(int irq)
882{ 882{
883 return irq >= 0 && (irq >= ARRAY_SIZE(acpi_irq_penalty) || 883 return irq >= 0 && (irq >= ARRAY_SIZE(acpi_isa_irq_penalty) ||
884 acpi_irq_get_penalty(irq) < PIRQ_PENALTY_ISA_ALWAYS); 884 acpi_irq_get_penalty(irq) < PIRQ_PENALTY_ISA_ALWAYS);
885} 885}
886 886