Lines Matching refs:irq

28 #include <linux/irq.h>
53 * later even the link is disable. Instead, we just repick the active irq
69 struct acpi_pci_link_irq irq;
97 struct acpi_resource_irq *p = &resource->data.irq;
112 link->irq.possible[i] = p->interrupts[i];
113 link->irq.possible_count++;
115 link->irq.triggering = p->triggering;
116 link->irq.polarity = p->polarity;
117 link->irq.resource_type = ACPI_RESOURCE_TYPE_IRQ;
138 link->irq.possible[i] = p->interrupts[i];
139 link->irq.possible_count++;
141 link->irq.triggering = p->triggering;
142 link->irq.polarity = p->polarity;
143 link->irq.resource_type = ACPI_RESOURCE_TYPE_EXTENDED_IRQ;
168 link->irq.possible_count);
176 int *irq = context;
184 struct acpi_resource_irq *p = &resource->data.irq;
193 *irq = p->interrupts[0];
208 *irq = p->interrupts[0];
222 * Run _CRS and set link->irq.active
233 int irq = 0;
235 link->irq.active = 0;
257 acpi_pci_link_check_current, &irq);
264 if (acpi_strict && !irq) {
269 link->irq.active = irq;
271 acpi_handle_debug(handle, "Link at IRQ %d \n", link->irq.active);
277 static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
288 if (!irq)
298 switch (link->irq.resource_type) {
302 resource->res.data.irq.triggering = link->irq.triggering;
303 resource->res.data.irq.polarity =
304 link->irq.polarity;
305 if (link->irq.triggering == ACPI_EDGE_SENSITIVE)
306 resource->res.data.irq.shareable =
309 resource->res.data.irq.shareable = ACPI_SHARED;
310 resource->res.data.irq.interrupt_count = 1;
311 resource->res.data.irq.interrupts[0] = irq;
320 link->irq.triggering;
322 link->irq.polarity;
323 if (link->irq.triggering == ACPI_EDGE_SENSITIVE)
329 resource->res.data.extended_irq.interrupts[0] = irq;
334 link->irq.resource_type);
361 /* Query _CRS, set link->irq.active */
369 * set link->irq.active
371 if (link->irq.active != irq) {
377 link->irq.active, irq);
378 link->irq.active = irq;
381 acpi_handle_debug(handle, "Set IRQ %d\n", link->irq.active);
451 static int acpi_irq_pci_sharing_penalty(int irq)
462 if (link->irq.active && link->irq.active == irq)
468 for (i = 0; i < link->irq.possible_count; i++)
469 if (link->irq.possible[i] == irq)
471 link->irq.possible_count;
477 static int acpi_irq_get_penalty(int irq)
481 if (irq == sci_irq)
484 if (irq < ACPI_MAX_ISA_IRQS)
485 return penalty + acpi_isa_irq_penalty[irq];
487 return penalty + acpi_irq_pci_sharing_penalty(irq);
504 if (link->irq.possible_count) {
507 link->irq.possible_count;
509 for (i = 0; i < link->irq.possible_count; i++) {
510 if (link->irq.possible[i] < ACPI_MAX_ISA_IRQS)
511 acpi_isa_irq_penalty[link->irq.
516 } else if (link->irq.active &&
517 (link->irq.active < ACPI_MAX_ISA_IRQS)) {
518 acpi_isa_irq_penalty[link->irq.active] +=
531 int irq;
534 if (link->irq.initialized) {
537 acpi_pci_link_set(link, link->irq.active);
544 for (i = 0; i < link->irq.possible_count; ++i) {
545 if (link->irq.active == link->irq.possible[i])
551 if (i == link->irq.possible_count) {
554 link->irq.active);
555 link->irq.active = 0;
561 if (link->irq.active)
562 irq = link->irq.active;
564 irq = link->irq.possible[link->irq.possible_count - 1];
566 if (acpi_irq_balance || !link->irq.active) {
571 for (i = (link->irq.possible_count - 1); i >= 0; i--) {
572 if (acpi_irq_get_penalty(irq) >
573 acpi_irq_get_penalty(link->irq.possible[i]))
574 irq = link->irq.possible[i];
577 if (acpi_irq_get_penalty(irq) >= PIRQ_PENALTY_ISA_ALWAYS) {
584 if (acpi_pci_link_set(link, irq)) {
589 if (link->irq.active < ACPI_MAX_ISA_IRQS)
590 acpi_isa_irq_penalty[link->irq.active] +=
594 link->irq.active);
597 link->irq.initialized = 1;
635 if (!link->irq.active) {
644 *triggering = link->irq.triggering;
646 *polarity = link->irq.polarity;
650 return link->irq.active;
654 * We don't change link's irq information here. After it is reenabled, we
674 if (!link->irq.initialized) {
697 return link->irq.active;
726 /* query and set link->irq.active */
730 acpi_device_bid(device), link->irq.active);
732 for (i = 0; i < link->irq.possible_count; i++) {
733 if (link->irq.active != link->irq.possible[i])
735 link->irq.possible[i]);
756 if (link->refcnt && link->irq.active && link->irq.initialized)
757 return (acpi_pci_link_set(link, link->irq.active));
793 int irq;
796 retval = get_option(&str, &irq);
802 if ((irq < 0) || (irq >= ACPI_MAX_ISA_IRQS))
806 new_penalty = acpi_isa_irq_penalty[irq] +
811 acpi_isa_irq_penalty[irq] = new_penalty;
825 void acpi_penalize_isa_irq(int irq, int active)
827 if ((irq >= 0) && (irq < ARRAY_SIZE(acpi_isa_irq_penalty)))
828 acpi_isa_irq_penalty[irq] +=
832 bool acpi_isa_irq_available(int irq)
834 return irq >= 0 && (irq >= ARRAY_SIZE(acpi_isa_irq_penalty) ||
835 acpi_irq_get_penalty(irq) < PIRQ_PENALTY_ISA_ALWAYS);
838 void acpi_penalize_sci_irq(int irq, int trigger, int polarity)
840 sci_irq = irq;