Lines Matching refs:irq
87 struct acpi_pci_link_irq irq; member
113 struct acpi_resource_irq *p = &resource->data.irq; in acpi_pci_link_check_possible()
128 link->irq.possible[i] = p->interrupts[i]; in acpi_pci_link_check_possible()
129 link->irq.possible_count++; in acpi_pci_link_check_possible()
131 link->irq.triggering = p->triggering; in acpi_pci_link_check_possible()
132 link->irq.polarity = p->polarity; in acpi_pci_link_check_possible()
133 link->irq.resource_type = ACPI_RESOURCE_TYPE_IRQ; in acpi_pci_link_check_possible()
154 link->irq.possible[i] = p->interrupts[i]; in acpi_pci_link_check_possible()
155 link->irq.possible_count++; in acpi_pci_link_check_possible()
157 link->irq.triggering = p->triggering; in acpi_pci_link_check_possible()
158 link->irq.polarity = p->polarity; in acpi_pci_link_check_possible()
159 link->irq.resource_type = ACPI_RESOURCE_TYPE_EXTENDED_IRQ; in acpi_pci_link_check_possible()
184 link->irq.possible_count)); in acpi_pci_link_get_possible()
192 int *irq = context; in acpi_pci_link_check_current() local
200 struct acpi_resource_irq *p = &resource->data.irq; in acpi_pci_link_check_current()
210 *irq = p->interrupts[0]; in acpi_pci_link_check_current()
226 *irq = p->interrupts[0]; in acpi_pci_link_check_current()
250 int irq = 0; in acpi_pci_link_get_current() local
252 link->irq.active = 0; in acpi_pci_link_get_current()
274 acpi_pci_link_check_current, &irq); in acpi_pci_link_get_current()
281 if (acpi_strict && !irq) { in acpi_pci_link_get_current()
286 link->irq.active = irq; in acpi_pci_link_get_current()
288 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link at IRQ %d \n", link->irq.active)); in acpi_pci_link_get_current()
294 static int acpi_pci_link_set(struct acpi_pci_link *link, int irq) in acpi_pci_link_set() argument
304 if (!irq) in acpi_pci_link_set()
314 switch (link->irq.resource_type) { in acpi_pci_link_set()
318 resource->res.data.irq.triggering = link->irq.triggering; in acpi_pci_link_set()
319 resource->res.data.irq.polarity = in acpi_pci_link_set()
320 link->irq.polarity; in acpi_pci_link_set()
321 if (link->irq.triggering == ACPI_EDGE_SENSITIVE) in acpi_pci_link_set()
322 resource->res.data.irq.sharable = in acpi_pci_link_set()
325 resource->res.data.irq.sharable = ACPI_SHARED; in acpi_pci_link_set()
326 resource->res.data.irq.interrupt_count = 1; in acpi_pci_link_set()
327 resource->res.data.irq.interrupts[0] = irq; in acpi_pci_link_set()
336 link->irq.triggering; in acpi_pci_link_set()
338 link->irq.polarity; in acpi_pci_link_set()
339 if (link->irq.triggering == ACPI_EDGE_SENSITIVE) in acpi_pci_link_set()
340 resource->res.data.irq.sharable = in acpi_pci_link_set()
343 resource->res.data.irq.sharable = ACPI_SHARED; in acpi_pci_link_set()
345 resource->res.data.extended_irq.interrupts[0] = irq; in acpi_pci_link_set()
349 printk(KERN_ERR PREFIX "Invalid Resource_type %d\n", link->irq.resource_type); in acpi_pci_link_set()
390 if (link->irq.active != irq) { in acpi_pci_link_set()
398 acpi_device_bid(link->device), link->irq.active, irq); in acpi_pci_link_set()
399 link->irq.active = irq; in acpi_pci_link_set()
402 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Set IRQ %d\n", link->irq.active)); in acpi_pci_link_set()
488 if (link->irq.possible_count) { in acpi_irq_penalty_init()
491 link->irq.possible_count; in acpi_irq_penalty_init()
493 for (i = 0; i < link->irq.possible_count; i++) { in acpi_irq_penalty_init()
494 if (link->irq.possible[i] < ACPI_MAX_ISA_IRQ) in acpi_irq_penalty_init()
495 acpi_irq_penalty[link->irq. in acpi_irq_penalty_init()
500 } else if (link->irq.active) { in acpi_irq_penalty_init()
501 acpi_irq_penalty[link->irq.active] += in acpi_irq_penalty_init()
514 int irq; in acpi_pci_link_allocate() local
517 if (link->irq.initialized) { in acpi_pci_link_allocate()
520 acpi_pci_link_set(link, link->irq.active); in acpi_pci_link_allocate()
527 for (i = 0; i < link->irq.possible_count; ++i) { in acpi_pci_link_allocate()
528 if (link->irq.active == link->irq.possible[i]) in acpi_pci_link_allocate()
534 if (i == link->irq.possible_count) { in acpi_pci_link_allocate()
537 " in _PRS\n", link->irq.active); in acpi_pci_link_allocate()
538 link->irq.active = 0; in acpi_pci_link_allocate()
544 if (link->irq.active) in acpi_pci_link_allocate()
545 irq = link->irq.active; in acpi_pci_link_allocate()
547 irq = link->irq.possible[link->irq.possible_count - 1]; in acpi_pci_link_allocate()
549 if (acpi_irq_balance || !link->irq.active) { in acpi_pci_link_allocate()
554 for (i = (link->irq.possible_count - 1); i >= 0; i--) { in acpi_pci_link_allocate()
555 if (acpi_irq_penalty[irq] > in acpi_pci_link_allocate()
556 acpi_irq_penalty[link->irq.possible[i]]) in acpi_pci_link_allocate()
557 irq = link->irq.possible[i]; in acpi_pci_link_allocate()
562 if (acpi_pci_link_set(link, irq)) { in acpi_pci_link_allocate()
569 acpi_irq_penalty[link->irq.active] += PIRQ_PENALTY_PCI_USING; in acpi_pci_link_allocate()
572 acpi_device_bid(link->device), link->irq.active); in acpi_pci_link_allocate()
575 link->irq.initialized = 1; in acpi_pci_link_allocate()
615 if (!link->irq.active) { in acpi_pci_link_allocate_irq()
624 *triggering = link->irq.triggering; in acpi_pci_link_allocate_irq()
626 *polarity = link->irq.polarity; in acpi_pci_link_allocate_irq()
632 return (link->irq.active); in acpi_pci_link_allocate_irq()
658 if (!link->irq.initialized) { in acpi_pci_link_free_irq()
683 return (link->irq.active); in acpi_pci_link_free_irq()
717 for (i = 0; i < link->irq.possible_count; i++) { in acpi_pci_link_add()
718 if (link->irq.active == link->irq.possible[i]) { in acpi_pci_link_add()
719 printk(KERN_CONT " *%d", link->irq.possible[i]); in acpi_pci_link_add()
722 printk(KERN_CONT " %d", link->irq.possible[i]); in acpi_pci_link_add()
728 printk(KERN_CONT " *%d", link->irq.active); in acpi_pci_link_add()
750 if (link->refcnt && link->irq.active && link->irq.initialized) in acpi_pci_link_resume()
751 return (acpi_pci_link_set(link, link->irq.active)); in acpi_pci_link_resume()
787 int irq; in acpi_irq_penalty_update() local
789 retval = get_option(&str, &irq); in acpi_irq_penalty_update()
794 if (irq < 0) in acpi_irq_penalty_update()
797 if (irq >= ARRAY_SIZE(acpi_irq_penalty)) in acpi_irq_penalty_update()
801 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED; in acpi_irq_penalty_update()
803 acpi_irq_penalty[irq] = PIRQ_PENALTY_PCI_AVAILABLE; in acpi_irq_penalty_update()
818 void acpi_penalize_isa_irq(int irq, int active) in acpi_penalize_isa_irq() argument
820 if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty)) { in acpi_penalize_isa_irq()
822 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED; in acpi_penalize_isa_irq()
824 acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; in acpi_penalize_isa_irq()
833 void acpi_penalize_sci_irq(int irq, int trigger, int polarity) in acpi_penalize_sci_irq() argument
835 if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty)) { in acpi_penalize_sci_irq()
838 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_ALWAYS; in acpi_penalize_sci_irq()
840 acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; in acpi_penalize_sci_irq()