Lines Matching refs:pin
61 #define for_each_pin(idx, pin) \ argument
62 for ((pin) = 0; (pin) < ioapics[(idx)].nr_registers; (pin)++)
63 #define for_each_ioapic_pin(idx, pin) \ argument
65 for_each_pin((idx), (pin))
132 u32 mp_pin_to_gsi(int ioapic, int pin) in mp_pin_to_gsi() argument
134 return mp_ioapic_gsi_routing(ioapic)->gsi_base + pin; in mp_pin_to_gsi()
150 static inline struct mp_pin_info *mp_pin_info(int ioapic_idx, int pin) in mp_pin_info() argument
152 return ioapics[ioapic_idx].pin_info + pin; in mp_pin_info()
221 int apic, pin; member
327 static struct IO_APIC_route_entry __ioapic_read_entry(int apic, int pin) in __ioapic_read_entry() argument
331 eu.w1 = io_apic_read(apic, 0x10 + 2 * pin); in __ioapic_read_entry()
332 eu.w2 = io_apic_read(apic, 0x11 + 2 * pin); in __ioapic_read_entry()
337 static struct IO_APIC_route_entry ioapic_read_entry(int apic, int pin) in ioapic_read_entry() argument
343 eu.entry = __ioapic_read_entry(apic, pin); in ioapic_read_entry()
355 static void __ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e) in __ioapic_write_entry() argument
360 io_apic_write(apic, 0x11 + 2*pin, eu.w2); in __ioapic_write_entry()
361 io_apic_write(apic, 0x10 + 2*pin, eu.w1); in __ioapic_write_entry()
364 static void ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e) in ioapic_write_entry() argument
369 __ioapic_write_entry(apic, pin, e); in ioapic_write_entry()
378 static void ioapic_mask_entry(int apic, int pin) in ioapic_mask_entry() argument
384 io_apic_write(apic, 0x10 + 2*pin, eu.w1); in ioapic_mask_entry()
385 io_apic_write(apic, 0x11 + 2*pin, eu.w2); in ioapic_mask_entry()
394 static int __add_pin_to_irq_node(struct irq_cfg *cfg, int node, int apic, int pin) in __add_pin_to_irq_node() argument
400 if (entry->apic == apic && entry->pin == pin) in __add_pin_to_irq_node()
406 node, apic, pin); in __add_pin_to_irq_node()
410 entry->pin = pin; in __add_pin_to_irq_node()
416 static void __remove_pin_from_irq(struct irq_cfg *cfg, int apic, int pin) in __remove_pin_from_irq() argument
421 if (entry->apic == apic && entry->pin == pin) { in __remove_pin_from_irq()
428 static void add_pin_to_irq_node(struct irq_cfg *cfg, int node, int apic, int pin) in add_pin_to_irq_node() argument
430 if (__add_pin_to_irq_node(cfg, node, apic, pin)) in add_pin_to_irq_node()
444 if (entry->apic == oldapic && entry->pin == oldpin) { in replace_pin_at_irq_node()
446 entry->pin = newpin; in replace_pin_at_irq_node()
460 unsigned int reg, pin; in __io_apic_modify_irq() local
462 pin = entry->pin; in __io_apic_modify_irq()
463 reg = io_apic_read(entry->apic, 0x10 + pin * 2); in __io_apic_modify_irq()
466 io_apic_modify(entry->apic, 0x10 + pin * 2, reg); in __io_apic_modify_irq()
542 void native_eoi_ioapic_pin(int apic, int pin, int vector) in native_eoi_ioapic_pin() argument
549 entry = entry1 = __ioapic_read_entry(apic, pin); in native_eoi_ioapic_pin()
557 __ioapic_write_entry(apic, pin, entry1); in native_eoi_ioapic_pin()
562 __ioapic_write_entry(apic, pin, entry); in native_eoi_ioapic_pin()
573 x86_io_apic_ops.eoi_ioapic_pin(entry->apic, entry->pin, in eoi_ioapic_irq()
578 static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin) in clear_IO_APIC_pin() argument
583 entry = ioapic_read_entry(apic, pin); in clear_IO_APIC_pin()
593 ioapic_write_entry(apic, pin, entry); in clear_IO_APIC_pin()
594 entry = ioapic_read_entry(apic, pin); in clear_IO_APIC_pin()
607 ioapic_write_entry(apic, pin, entry); in clear_IO_APIC_pin()
611 x86_io_apic_ops.eoi_ioapic_pin(apic, pin, entry.vector); in clear_IO_APIC_pin()
619 ioapic_mask_entry(apic, pin); in clear_IO_APIC_pin()
620 entry = ioapic_read_entry(apic, pin); in clear_IO_APIC_pin()
623 mpc_ioapic_id(apic), pin); in clear_IO_APIC_pin()
628 int apic, pin; in clear_IO_APIC() local
630 for_each_ioapic_pin(apic, pin) in clear_IO_APIC()
631 clear_IO_APIC_pin(apic, pin); in clear_IO_APIC()
677 int apic, pin; in save_ioapic_entries() local
686 for_each_pin(apic, pin) in save_ioapic_entries()
687 ioapics[apic].saved_registers[pin] = in save_ioapic_entries()
688 ioapic_read_entry(apic, pin); in save_ioapic_entries()
699 int apic, pin; in mask_ioapic_entries() local
705 for_each_pin(apic, pin) { in mask_ioapic_entries()
708 entry = ioapics[apic].saved_registers[pin]; in mask_ioapic_entries()
711 ioapic_write_entry(apic, pin, entry); in mask_ioapic_entries()
722 int apic, pin; in restore_ioapic_entries() local
728 for_each_pin(apic, pin) in restore_ioapic_entries()
729 ioapic_write_entry(apic, pin, in restore_ioapic_entries()
730 ioapics[apic].saved_registers[pin]); in restore_ioapic_entries()
738 static int find_irq_entry(int ioapic_idx, int pin, int type) in find_irq_entry() argument
746 mp_irqs[i].dstirq == pin) in find_irq_entry()
941 static int alloc_irq_from_domain(struct irq_domain *domain, u32 gsi, int pin) in alloc_irq_from_domain() argument
954 irq = irq_create_mapping(domain, pin); in alloc_irq_from_domain()
955 else if (irq_create_strict_mappings(domain, gsi, pin, 1) == 0) in alloc_irq_from_domain()
959 if (irq_create_strict_mappings(domain, gsi, pin, 1) == 0) in alloc_irq_from_domain()
963 irq = irq_create_mapping(domain, pin); in alloc_irq_from_domain()
973 static int mp_map_pin_to_irq(u32 gsi, int idx, int ioapic, int pin, in mp_map_pin_to_irq() argument
978 struct mp_pin_info *info = mp_pin_info(ioapic, pin); in mp_map_pin_to_irq()
1001 mp_irqdomain_map(domain, irq, pin) != 0) in mp_map_pin_to_irq()
1009 irq = irq_find_mapping(domain, pin); in mp_map_pin_to_irq()
1011 irq = alloc_irq_from_domain(domain, gsi, pin); in mp_map_pin_to_irq()
1017 mp_irqdomain_map(domain, irq, pin) != 0) in mp_map_pin_to_irq()
1031 static int pin_2_irq(int idx, int ioapic, int pin, unsigned int flags) in pin_2_irq() argument
1033 u32 gsi = mp_pin_to_gsi(ioapic, pin); in pin_2_irq()
1038 if (mp_irqs[idx].dstirq != pin) in pin_2_irq()
1045 if ((pin >= 16) && (pin <= 23)) { in pin_2_irq()
1046 if (pirq_entries[pin-16] != -1) { in pin_2_irq()
1047 if (!pirq_entries[pin-16]) { in pin_2_irq()
1049 "disabling PIRQ%d\n", pin-16); in pin_2_irq()
1051 int irq = pirq_entries[pin-16]; in pin_2_irq()
1054 pin-16, irq); in pin_2_irq()
1061 return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags); in pin_2_irq()
1066 int ioapic, pin, idx; in mp_map_gsi_to_irq() local
1072 pin = mp_find_ioapic_pin(ioapic, gsi); in mp_map_gsi_to_irq()
1073 idx = find_irq_entry(ioapic, pin, mp_INT); in mp_map_gsi_to_irq()
1077 return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags); in mp_map_gsi_to_irq()
1084 int ioapic, pin; in mp_unmap_irq() local
1090 pin = (int)data->hwirq; in mp_unmap_irq()
1091 info = mp_pin_info(ioapic, pin); in mp_unmap_irq()
1109 int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin) in IO_APIC_get_PCI_irq_vector() argument
1115 bus, slot, pin); in IO_APIC_get_PCI_irq_vector()
1144 if (pin == (mp_irqs[i].srcbusirq & 3)) { in IO_APIC_get_PCI_irq_vector()
1173 int apic, idx, pin; in IO_APIC_irq_trigger() local
1175 for_each_ioapic_pin(apic, pin) { in IO_APIC_irq_trigger()
1176 idx = find_irq_entry(apic, pin, mp_INT); in IO_APIC_irq_trigger()
1177 if ((idx != -1) && (irq == pin_2_irq(idx, apic, pin, 0))) in IO_APIC_irq_trigger()
1284 unsigned int ioapic, pin; in setup_IO_APIC_irqs() local
1289 for_each_ioapic_pin(ioapic, pin) { in setup_IO_APIC_irqs()
1290 idx = find_irq_entry(ioapic, pin, mp_INT); in setup_IO_APIC_irqs()
1294 mpc_ioapic_id(ioapic), pin); in setup_IO_APIC_irqs()
1296 pin_2_irq(idx, ioapic, pin, in setup_IO_APIC_irqs()
1305 unsigned int pin, int vector) in setup_timer_IRQ0_pin() argument
1338 ioapic_write_entry(ioapic_idx, pin, entry); in setup_timer_IRQ0_pin()
1495 pr_cont("-> %d:%d", entry->apic, entry->pin); in print_IO_APICs()
1503 static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; member
1508 int apic, pin; in enable_IO_APIC() local
1516 for_each_ioapic_pin(apic, pin) { in enable_IO_APIC()
1518 struct IO_APIC_route_entry entry = ioapic_read_entry(apic, pin); in enable_IO_APIC()
1525 ioapic_i8259.pin = pin; in enable_IO_APIC()
1538 if ((ioapic_i8259.pin == -1) && (i8259_pin >= 0)) { in enable_IO_APIC()
1540 ioapic_i8259.pin = i8259_pin; in enable_IO_APIC()
1544 if (((ioapic_i8259.apic != i8259_apic) || (ioapic_i8259.pin != i8259_pin)) && in enable_IO_APIC()
1545 (i8259_pin >= 0) && (ioapic_i8259.pin >= 0)) in enable_IO_APIC()
1563 if (ioapic_i8259.pin != -1) { in native_disable_io_apic()
1580 ioapic_write_entry(ioapic_i8259.apic, ioapic_i8259.pin, entry); in native_disable_io_apic()
1584 disconnect_bsp_APIC(ioapic_i8259.pin != -1); in native_disable_io_apic()
1824 int apic, pin; in __target_IO_APIC_irq() local
1832 pin = entry->pin; in __target_IO_APIC_irq()
1834 io_apic_write(apic, 0x11 + pin*2, dest); in __target_IO_APIC_irq()
1835 reg = io_apic_read(apic, 0x10 + pin*2); in __target_IO_APIC_irq()
1838 io_apic_modify(apic, 0x10 + pin*2, reg); in __target_IO_APIC_irq()
1876 int pin; in io_apic_level_ack_pending() local
1878 pin = entry->pin; in io_apic_level_ack_pending()
1879 reg = io_apic_read(entry->apic, 0x10 + pin*2); in io_apic_level_ack_pending()
2096 int apic, pin, i; in unlock_ExtINT_logic() local
2100 pin = find_isa_irq_pin(8, mp_INT); in unlock_ExtINT_logic()
2101 if (pin == -1) { in unlock_ExtINT_logic()
2111 entry0 = ioapic_read_entry(apic, pin); in unlock_ExtINT_logic()
2112 clear_IO_APIC_pin(apic, pin); in unlock_ExtINT_logic()
2124 ioapic_write_entry(apic, pin, entry1); in unlock_ExtINT_logic()
2141 clear_IO_APIC_pin(apic, pin); in unlock_ExtINT_logic()
2143 ioapic_write_entry(apic, pin, entry0); in unlock_ExtINT_logic()
2193 pin2 = ioapic_i8259.pin; in check_timer()
2639 int ioapic, pin, idx; in acpi_get_override_irq() local
2648 pin = mp_find_ioapic_pin(ioapic, gsi); in acpi_get_override_irq()
2649 if (pin < 0) in acpi_get_override_irq()
2652 idx = find_irq_entry(ioapic, pin, mp_INT); in acpi_get_override_irq()
2669 int pin, ioapic, irq, irq_entry; in setup_ioapic_dest() local
2676 for_each_ioapic_pin(ioapic, pin) { in setup_ioapic_dest()
2677 irq_entry = find_irq_entry(ioapic, pin, mp_INT); in setup_ioapic_dest()
2681 irq = pin_2_irq(irq_entry, ioapic, pin, 0); in setup_ioapic_dest()
2963 int ioapic, pin; in mp_unregister_ioapic() local
2977 for_each_pin(ioapic, pin) { in mp_unregister_ioapic()
2978 pin_info = mp_pin_info(ioapic, pin); in mp_unregister_ioapic()
2981 pin, ioapic); in mp_unregister_ioapic()
3061 int pin = (int)data->hwirq; in mp_irqdomain_unmap() local
3063 ioapic_mask_entry(ioapic, pin); in mp_irqdomain_unmap()
3064 __remove_pin_from_irq(cfg, ioapic, pin); in mp_irqdomain_unmap()
3072 int ioapic, pin; in mp_set_gsi_attr() local
3079 pin = mp_find_ioapic_pin(ioapic, gsi); in mp_set_gsi_attr()
3080 info = mp_pin_info(ioapic, pin); in mp_set_gsi_attr()