Lines Matching refs:irq
83 struct acpi_pci_link_irq irq; member
109 struct acpi_resource_irq *p = &resource->data.irq; in acpi_pci_link_check_possible()
124 link->irq.possible[i] = p->interrupts[i]; in acpi_pci_link_check_possible()
125 link->irq.possible_count++; in acpi_pci_link_check_possible()
127 link->irq.triggering = p->triggering; in acpi_pci_link_check_possible()
128 link->irq.polarity = p->polarity; in acpi_pci_link_check_possible()
129 link->irq.resource_type = ACPI_RESOURCE_TYPE_IRQ; in acpi_pci_link_check_possible()
150 link->irq.possible[i] = p->interrupts[i]; in acpi_pci_link_check_possible()
151 link->irq.possible_count++; in acpi_pci_link_check_possible()
153 link->irq.triggering = p->triggering; in acpi_pci_link_check_possible()
154 link->irq.polarity = p->polarity; in acpi_pci_link_check_possible()
155 link->irq.resource_type = ACPI_RESOURCE_TYPE_EXTENDED_IRQ; in acpi_pci_link_check_possible()
180 link->irq.possible_count)); in acpi_pci_link_get_possible()
188 int *irq = context; in acpi_pci_link_check_current() local
196 struct acpi_resource_irq *p = &resource->data.irq; in acpi_pci_link_check_current()
206 *irq = p->interrupts[0]; in acpi_pci_link_check_current()
222 *irq = p->interrupts[0]; in acpi_pci_link_check_current()
246 int irq = 0; in acpi_pci_link_get_current() local
248 link->irq.active = 0; in acpi_pci_link_get_current()
270 acpi_pci_link_check_current, &irq); in acpi_pci_link_get_current()
277 if (acpi_strict && !irq) { in acpi_pci_link_get_current()
282 link->irq.active = irq; in acpi_pci_link_get_current()
284 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link at IRQ %d \n", link->irq.active)); in acpi_pci_link_get_current()
290 static int acpi_pci_link_set(struct acpi_pci_link *link, int irq) in acpi_pci_link_set() argument
300 if (!irq) in acpi_pci_link_set()
310 switch (link->irq.resource_type) { in acpi_pci_link_set()
314 resource->res.data.irq.triggering = link->irq.triggering; in acpi_pci_link_set()
315 resource->res.data.irq.polarity = in acpi_pci_link_set()
316 link->irq.polarity; in acpi_pci_link_set()
317 if (link->irq.triggering == ACPI_EDGE_SENSITIVE) in acpi_pci_link_set()
318 resource->res.data.irq.sharable = in acpi_pci_link_set()
321 resource->res.data.irq.sharable = ACPI_SHARED; in acpi_pci_link_set()
322 resource->res.data.irq.interrupt_count = 1; in acpi_pci_link_set()
323 resource->res.data.irq.interrupts[0] = irq; in acpi_pci_link_set()
332 link->irq.triggering; in acpi_pci_link_set()
334 link->irq.polarity; in acpi_pci_link_set()
335 if (link->irq.triggering == ACPI_EDGE_SENSITIVE) in acpi_pci_link_set()
336 resource->res.data.irq.sharable = in acpi_pci_link_set()
339 resource->res.data.irq.sharable = ACPI_SHARED; in acpi_pci_link_set()
341 resource->res.data.extended_irq.interrupts[0] = irq; in acpi_pci_link_set()
345 printk(KERN_ERR PREFIX "Invalid Resource_type %d\n", link->irq.resource_type); in acpi_pci_link_set()
386 if (link->irq.active != irq) { in acpi_pci_link_set()
394 acpi_device_bid(link->device), link->irq.active, irq); in acpi_pci_link_set()
395 link->irq.active = irq; in acpi_pci_link_set()
398 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Set IRQ %d\n", link->irq.active)); in acpi_pci_link_set()
484 if (link->irq.possible_count) { in acpi_irq_penalty_init()
487 link->irq.possible_count; in acpi_irq_penalty_init()
489 for (i = 0; i < link->irq.possible_count; i++) { in acpi_irq_penalty_init()
490 if (link->irq.possible[i] < ACPI_MAX_ISA_IRQ) in acpi_irq_penalty_init()
491 acpi_irq_penalty[link->irq. in acpi_irq_penalty_init()
496 } else if (link->irq.active) { in acpi_irq_penalty_init()
497 acpi_irq_penalty[link->irq.active] += in acpi_irq_penalty_init()
509 int irq; in acpi_pci_link_allocate() local
512 if (link->irq.initialized) { in acpi_pci_link_allocate()
515 acpi_pci_link_set(link, link->irq.active); in acpi_pci_link_allocate()
522 for (i = 0; i < link->irq.possible_count; ++i) { in acpi_pci_link_allocate()
523 if (link->irq.active == link->irq.possible[i]) in acpi_pci_link_allocate()
529 if (i == link->irq.possible_count) { in acpi_pci_link_allocate()
532 " in _PRS\n", link->irq.active); in acpi_pci_link_allocate()
533 link->irq.active = 0; in acpi_pci_link_allocate()
539 if (link->irq.active) in acpi_pci_link_allocate()
540 irq = link->irq.active; in acpi_pci_link_allocate()
542 irq = link->irq.possible[link->irq.possible_count - 1]; in acpi_pci_link_allocate()
544 if (acpi_irq_balance || !link->irq.active) { in acpi_pci_link_allocate()
549 for (i = (link->irq.possible_count - 1); i >= 0; i--) { in acpi_pci_link_allocate()
550 if (acpi_irq_penalty[irq] > in acpi_pci_link_allocate()
551 acpi_irq_penalty[link->irq.possible[i]]) in acpi_pci_link_allocate()
552 irq = link->irq.possible[i]; in acpi_pci_link_allocate()
555 if (acpi_irq_penalty[irq] >= PIRQ_PENALTY_ISA_ALWAYS) { in acpi_pci_link_allocate()
564 if (acpi_pci_link_set(link, irq)) { in acpi_pci_link_allocate()
571 acpi_irq_penalty[link->irq.active] += PIRQ_PENALTY_PCI_USING; in acpi_pci_link_allocate()
574 acpi_device_bid(link->device), link->irq.active); in acpi_pci_link_allocate()
577 link->irq.initialized = 1; in acpi_pci_link_allocate()
617 if (!link->irq.active) { in acpi_pci_link_allocate_irq()
626 *triggering = link->irq.triggering; in acpi_pci_link_allocate_irq()
628 *polarity = link->irq.polarity; in acpi_pci_link_allocate_irq()
634 return (link->irq.active); in acpi_pci_link_allocate_irq()
660 if (!link->irq.initialized) { in acpi_pci_link_free_irq()
685 return (link->irq.active); in acpi_pci_link_free_irq()
719 for (i = 0; i < link->irq.possible_count; i++) { in acpi_pci_link_add()
720 if (link->irq.active == link->irq.possible[i]) { in acpi_pci_link_add()
721 printk(KERN_CONT " *%d", link->irq.possible[i]); in acpi_pci_link_add()
724 printk(KERN_CONT " %d", link->irq.possible[i]); in acpi_pci_link_add()
730 printk(KERN_CONT " *%d", link->irq.active); in acpi_pci_link_add()
752 if (link->refcnt && link->irq.active && link->irq.initialized) in acpi_pci_link_resume()
753 return (acpi_pci_link_set(link, link->irq.active)); in acpi_pci_link_resume()
789 int irq; in acpi_irq_penalty_update() local
791 retval = get_option(&str, &irq); in acpi_irq_penalty_update()
796 if (irq < 0) in acpi_irq_penalty_update()
799 if (irq >= ARRAY_SIZE(acpi_irq_penalty)) in acpi_irq_penalty_update()
803 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED; in acpi_irq_penalty_update()
805 acpi_irq_penalty[irq] = PIRQ_PENALTY_PCI_AVAILABLE; in acpi_irq_penalty_update()
820 void acpi_penalize_isa_irq(int irq, int active) in acpi_penalize_isa_irq() argument
822 if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty)) { in acpi_penalize_isa_irq()
824 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_USED; in acpi_penalize_isa_irq()
826 acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; in acpi_penalize_isa_irq()
830 bool acpi_isa_irq_available(int irq) in acpi_isa_irq_available() argument
832 return irq >= 0 && (irq >= ARRAY_SIZE(acpi_irq_penalty) || in acpi_isa_irq_available()
833 acpi_irq_penalty[irq] < PIRQ_PENALTY_ISA_ALWAYS); in acpi_isa_irq_available()
841 void acpi_penalize_sci_irq(int irq, int trigger, int polarity) in acpi_penalize_sci_irq() argument
843 if (irq >= 0 && irq < ARRAY_SIZE(acpi_irq_penalty)) { in acpi_penalize_sci_irq()
846 acpi_irq_penalty[irq] += PIRQ_PENALTY_ISA_ALWAYS; in acpi_penalize_sci_irq()
848 acpi_irq_penalty[irq] += PIRQ_PENALTY_PCI_USING; in acpi_penalize_sci_irq()