Lines Matching refs:pin
73 #define for_each_pin(idx, pin) \ argument
74 for ((pin) = 0; (pin) < ioapics[(idx)].nr_registers; (pin)++)
75 #define for_each_ioapic_pin(idx, pin) \ argument
77 for_each_pin((idx), (pin))
88 int apic, pin; member
147 static inline u32 mp_pin_to_gsi(int ioapic, int pin) in mp_pin_to_gsi() argument
149 return mp_ioapic_gsi_routing(ioapic)->gsi_base + pin; in mp_pin_to_gsi()
289 static struct IO_APIC_route_entry __ioapic_read_entry(int apic, int pin) in __ioapic_read_entry() argument
293 entry.w1 = io_apic_read(apic, 0x10 + 2 * pin); in __ioapic_read_entry()
294 entry.w2 = io_apic_read(apic, 0x11 + 2 * pin); in __ioapic_read_entry()
299 static struct IO_APIC_route_entry ioapic_read_entry(int apic, int pin) in ioapic_read_entry() argument
305 entry = __ioapic_read_entry(apic, pin); in ioapic_read_entry()
317 static void __ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e) in __ioapic_write_entry() argument
319 io_apic_write(apic, 0x11 + 2*pin, e.w2); in __ioapic_write_entry()
320 io_apic_write(apic, 0x10 + 2*pin, e.w1); in __ioapic_write_entry()
323 static void ioapic_write_entry(int apic, int pin, struct IO_APIC_route_entry e) in ioapic_write_entry() argument
328 __ioapic_write_entry(apic, pin, e); in ioapic_write_entry()
337 static void ioapic_mask_entry(int apic, int pin) in ioapic_mask_entry() argument
343 io_apic_write(apic, 0x10 + 2*pin, e.w1); in ioapic_mask_entry()
344 io_apic_write(apic, 0x11 + 2*pin, e.w2); in ioapic_mask_entry()
354 int node, int apic, int pin) in __add_pin_to_irq_node() argument
360 if (entry->apic == apic && entry->pin == pin) in __add_pin_to_irq_node()
366 node, apic, pin); in __add_pin_to_irq_node()
370 entry->pin = pin; in __add_pin_to_irq_node()
376 static void __remove_pin_from_irq(struct mp_chip_data *data, int apic, int pin) in __remove_pin_from_irq() argument
381 if (entry->apic == apic && entry->pin == pin) { in __remove_pin_from_irq()
389 int node, int apic, int pin) in add_pin_to_irq_node() argument
391 if (__add_pin_to_irq_node(data, node, apic, pin)) in add_pin_to_irq_node()
405 if (entry->apic == oldapic && entry->pin == oldpin) { in replace_pin_at_irq_node()
407 entry->pin = newpin; in replace_pin_at_irq_node()
425 io_apic_write(entry->apic, 0x10 + 2 * entry->pin, data->entry.w1); in io_apic_modify_irq()
484 static void __eoi_ioapic_pin(int apic, int pin, int vector) in __eoi_ioapic_pin() argument
491 entry = entry1 = __ioapic_read_entry(apic, pin); in __eoi_ioapic_pin()
499 __ioapic_write_entry(apic, pin, entry1); in __eoi_ioapic_pin()
504 __ioapic_write_entry(apic, pin, entry); in __eoi_ioapic_pin()
515 __eoi_ioapic_pin(entry->apic, entry->pin, vector); in eoi_ioapic_pin()
519 static void clear_IO_APIC_pin(unsigned int apic, unsigned int pin) in clear_IO_APIC_pin() argument
524 entry = ioapic_read_entry(apic, pin); in clear_IO_APIC_pin()
534 ioapic_write_entry(apic, pin, entry); in clear_IO_APIC_pin()
535 entry = ioapic_read_entry(apic, pin); in clear_IO_APIC_pin()
548 ioapic_write_entry(apic, pin, entry); in clear_IO_APIC_pin()
551 __eoi_ioapic_pin(apic, pin, entry.vector); in clear_IO_APIC_pin()
559 ioapic_mask_entry(apic, pin); in clear_IO_APIC_pin()
560 entry = ioapic_read_entry(apic, pin); in clear_IO_APIC_pin()
563 mpc_ioapic_id(apic), pin); in clear_IO_APIC_pin()
568 int apic, pin; in clear_IO_APIC() local
570 for_each_ioapic_pin(apic, pin) in clear_IO_APIC()
571 clear_IO_APIC_pin(apic, pin); in clear_IO_APIC()
617 int apic, pin; in save_ioapic_entries() local
626 for_each_pin(apic, pin) in save_ioapic_entries()
627 ioapics[apic].saved_registers[pin] = in save_ioapic_entries()
628 ioapic_read_entry(apic, pin); in save_ioapic_entries()
639 int apic, pin; in mask_ioapic_entries() local
645 for_each_pin(apic, pin) { in mask_ioapic_entries()
648 entry = ioapics[apic].saved_registers[pin]; in mask_ioapic_entries()
651 ioapic_write_entry(apic, pin, entry); in mask_ioapic_entries()
662 int apic, pin; in restore_ioapic_entries() local
668 for_each_pin(apic, pin) in restore_ioapic_entries()
669 ioapic_write_entry(apic, pin, in restore_ioapic_entries()
670 ioapics[apic].saved_registers[pin]); in restore_ioapic_entries()
678 static int find_irq_entry(int ioapic_idx, int pin, int type) in find_irq_entry() argument
686 mp_irqs[i].dstirq == pin) in find_irq_entry()
830 int ioapic, pin, idx; in __acpi_get_override_irq() local
839 pin = mp_find_ioapic_pin(ioapic, gsi); in __acpi_get_override_irq()
840 if (pin < 0) in __acpi_get_override_irq()
843 idx = find_irq_entry(ioapic, pin, mp_INT); in __acpi_get_override_irq()
874 u32 gsi, int ioapic_idx, int pin) in ioapic_copy_alloc_attr() argument
881 dst->ioapic.pin = pin; in ioapic_copy_alloc_attr()
988 int irq, int ioapic, int pin, in alloc_isa_irq_from_domain() argument
1004 info->ioapic.pin)) in alloc_isa_irq_from_domain()
1020 static int mp_map_pin_to_irq(u32 gsi, int idx, int ioapic, int pin, in mp_map_pin_to_irq() argument
1050 irq = irq_find_mapping(domain, pin); in mp_map_pin_to_irq()
1055 ioapic_copy_alloc_attr(&tmp, info, gsi, ioapic, pin); in mp_map_pin_to_irq()
1058 ioapic, pin, &tmp); in mp_map_pin_to_irq()
1059 else if ((irq = irq_find_mapping(domain, pin)) == 0) in mp_map_pin_to_irq()
1073 static int pin_2_irq(int idx, int ioapic, int pin, unsigned int flags) in pin_2_irq() argument
1075 u32 gsi = mp_pin_to_gsi(ioapic, pin); in pin_2_irq()
1080 if (mp_irqs[idx].dstirq != pin) in pin_2_irq()
1087 if ((pin >= 16) && (pin <= 23)) { in pin_2_irq()
1088 if (pirq_entries[pin-16] != -1) { in pin_2_irq()
1089 if (!pirq_entries[pin-16]) { in pin_2_irq()
1091 "disabling PIRQ%d\n", pin-16); in pin_2_irq()
1093 int irq = pirq_entries[pin-16]; in pin_2_irq()
1096 pin-16, irq); in pin_2_irq()
1103 return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags, NULL); in pin_2_irq()
1108 int ioapic, pin, idx; in mp_map_gsi_to_irq() local
1114 pin = mp_find_ioapic_pin(ioapic, gsi); in mp_map_gsi_to_irq()
1115 idx = find_irq_entry(ioapic, pin, mp_INT); in mp_map_gsi_to_irq()
1119 return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags, info); in mp_map_gsi_to_irq()
1144 int IO_APIC_get_PCI_irq_vector(int bus, int slot, int pin) in IO_APIC_get_PCI_irq_vector() argument
1150 bus, slot, pin); in IO_APIC_get_PCI_irq_vector()
1179 if (pin == (mp_irqs[i].srcbusirq & 3)) { in IO_APIC_get_PCI_irq_vector()
1207 unsigned int ioapic, pin; in setup_IO_APIC_irqs() local
1212 for_each_ioapic_pin(ioapic, pin) { in setup_IO_APIC_irqs()
1213 idx = find_irq_entry(ioapic, pin, mp_INT); in setup_IO_APIC_irqs()
1217 mpc_ioapic_id(ioapic), pin); in setup_IO_APIC_irqs()
1219 pin_2_irq(idx, ioapic, pin, in setup_IO_APIC_irqs()
1352 pr_cont("-> %d:%d", entry->apic, entry->pin); in print_IO_APICs()
1360 static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; member
1365 int apic, pin; in enable_IO_APIC() local
1373 for_each_ioapic_pin(apic, pin) { in enable_IO_APIC()
1375 struct IO_APIC_route_entry entry = ioapic_read_entry(apic, pin); in enable_IO_APIC()
1383 ioapic_i8259.pin = pin; in enable_IO_APIC()
1396 if ((ioapic_i8259.pin == -1) && (i8259_pin >= 0)) { in enable_IO_APIC()
1398 ioapic_i8259.pin = i8259_pin; in enable_IO_APIC()
1402 if (((ioapic_i8259.apic != i8259_apic) || (ioapic_i8259.pin != i8259_pin)) && in enable_IO_APIC()
1403 (i8259_pin >= 0) && (ioapic_i8259.pin >= 0)) in enable_IO_APIC()
1421 if (ioapic_i8259.pin != -1) { in native_restore_boot_irq_mode()
1437 ioapic_write_entry(ioapic_i8259.apic, ioapic_i8259.pin, entry); in native_restore_boot_irq_mode()
1441 disconnect_bsp_APIC(ioapic_i8259.pin != -1); in native_restore_boot_irq_mode()
1707 int pin; in io_apic_level_ack_pending() local
1709 pin = entry->pin; in io_apic_level_ack_pending()
1710 e.w1 = io_apic_read(entry->apic, 0x10 + pin*2); in io_apic_level_ack_pending()
1916 __ioapic_write_entry(entry->apic, entry->pin, mpd->entry); in ioapic_configure_entry()
1963 rentry = __ioapic_read_entry(p->apic, p->pin); in ioapic_irq_get_chip_state()
2077 int apic, pin, i; in unlock_ExtINT_logic() local
2082 pin = find_isa_irq_pin(8, mp_INT); in unlock_ExtINT_logic()
2083 if (pin == -1) { in unlock_ExtINT_logic()
2093 entry0 = ioapic_read_entry(apic, pin); in unlock_ExtINT_logic()
2094 clear_IO_APIC_pin(apic, pin); in unlock_ExtINT_logic()
2108 ioapic_write_entry(apic, pin, entry1); in unlock_ExtINT_logic()
2125 clear_IO_APIC_pin(apic, pin); in unlock_ExtINT_logic()
2127 ioapic_write_entry(apic, pin, entry0); in unlock_ExtINT_logic()
2139 static int mp_alloc_timer_irq(int ioapic, int pin) in mp_alloc_timer_irq() argument
2149 info.ioapic.pin = pin; in mp_alloc_timer_irq()
2151 irq = alloc_isa_irq_from_domain(domain, 0, ioapic, pin, &info); in mp_alloc_timer_irq()
2199 pin2 = ioapic_i8259.pin; in check_timer()
2911 int ioapic, pin; in mp_unregister_ioapic() local
2924 for_each_pin(ioapic, pin) { in mp_unregister_ioapic()
2925 u32 gsi = mp_pin_to_gsi(ioapic, pin); in mp_unregister_ioapic()
2933 pin, ioapic); in mp_unregister_ioapic()
3008 int ret, ioapic, pin; in mp_irqdomain_alloc() local
3018 pin = info->ioapic.pin; in mp_irqdomain_alloc()
3019 if (irq_find_mapping(domain, (irq_hw_number_t)pin) > 0) in mp_irqdomain_alloc()
3033 irq_data->hwirq = info->ioapic.pin; in mp_irqdomain_alloc()
3037 mp_irqdomain_get_attr(mp_pin_to_gsi(ioapic, pin), data, info); in mp_irqdomain_alloc()
3039 add_pin_to_irq_node(data, ioapic_alloc_attr_node(info), ioapic, pin); in mp_irqdomain_alloc()
3051 ioapic, mpc_ioapic_id(ioapic), pin, virq, in mp_irqdomain_alloc()