Lines Matching refs:virq

45  * implementation equates HV plug value to Linux virq value, constrains each
89 * @virq: The assigned Linux virq.
99 DBG("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
110 * @virq: The assigned Linux virq.
120 DBG("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
131 * @virq: The assigned Linux virq.
158 * ps3_virq_setup - virq related setup.
162 * @virq: The assigned Linux virq.
164 * Calls irq_create_mapping() to get a virq and sets the chip data to
169 unsigned int *virq)
181 *virq = irq_create_mapping(NULL, outlet);
183 if (!*virq) {
190 DBG("%s:%d: outlet %lu => cpu %u, virq %u\n", __func__, __LINE__,
191 outlet, cpu, *virq);
193 result = irq_set_chip_data(*virq, pd);
201 ps3_chip_mask(irq_get_irq_data(*virq));
206 irq_dispose_mapping(*virq);
212 * ps3_virq_destroy - virq related teardown.
213 * @virq: The assigned Linux virq.
215 * Clears chip data and calls irq_dispose_mapping() for the virq.
218 static int ps3_virq_destroy(unsigned int virq)
220 const struct ps3_private *pd = irq_get_chip_data(virq);
222 DBG("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__,
223 __LINE__, pd->ppe_id, pd->thread_id, virq);
225 irq_set_chip_data(virq, NULL);
226 irq_dispose_mapping(virq);
233 * ps3_irq_plug_setup - Generic outlet and virq related setup.
237 * @virq: The assigned Linux virq.
239 * Sets up virq and connects the irq plug.
243 unsigned int *virq)
248 result = ps3_virq_setup(cpu, outlet, virq);
255 pd = irq_get_chip_data(*virq);
257 /* Binds outlet to cpu + virq. */
259 result = lv1_connect_irq_plug_ext(pd->ppe_id, pd->thread_id, *virq,
272 ps3_virq_destroy(*virq);
279 * ps3_irq_plug_destroy - Generic outlet and virq related teardown.
280 * @virq: The assigned Linux virq.
282 * Disconnects the irq plug and tears down virq.
287 int ps3_irq_plug_destroy(unsigned int virq)
290 const struct ps3_private *pd = irq_get_chip_data(virq);
292 DBG("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__,
293 __LINE__, pd->ppe_id, pd->thread_id, virq);
295 ps3_chip_mask(irq_get_irq_data(virq));
297 result = lv1_disconnect_irq_plug_ext(pd->ppe_id, pd->thread_id, virq);
303 ps3_virq_destroy(virq);
313 * @virq: The assigned Linux virq.
315 * The virq can be used with lv1_connect_interrupt_event_receive_port() to
320 int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq)
330 *virq = 0;
334 result = ps3_irq_plug_setup(cpu, outlet, virq);
343 * @virq: The assigned Linux virq.
350 int ps3_event_receive_port_destroy(unsigned int virq)
354 DBG(" -> %s:%d virq %u\n", __func__, __LINE__, virq);
356 ps3_chip_mask(irq_get_irq_data(virq));
358 result = lv1_destruct_event_receive_port(virq_to_hw(virq));
373 int ps3_send_event_locally(unsigned int virq)
375 return lv1_send_event_locally(virq_to_hw(virq));
383 * @virq: The assigned Linux virq.
390 enum ps3_cpu_binding cpu, unsigned int *virq)
396 result = ps3_event_receive_port_setup(cpu, virq);
402 dev->dev_id, virq_to_hw(*virq), dev->interrupt_id);
408 ps3_event_receive_port_destroy(*virq);
409 *virq = 0;
413 DBG("%s:%d: interrupt_id %u, virq %u\n", __func__, __LINE__,
414 dev->interrupt_id, *virq);
421 unsigned int virq)
427 DBG(" -> %s:%d: interrupt_id %u, virq %u\n", __func__, __LINE__,
428 dev->interrupt_id, virq);
431 dev->dev_id, virq_to_hw(virq), dev->interrupt_id);
438 result = ps3_event_receive_port_destroy(virq);
446 result = ps3_virq_destroy(virq);
459 * @virq: The assigned Linux virq.
466 unsigned int *virq)
479 result = ps3_irq_plug_setup(cpu, outlet, virq);
486 int ps3_io_irq_destroy(unsigned int virq)
489 unsigned long outlet = virq_to_hw(virq);
491 ps3_chip_mask(irq_get_irq_data(virq));
498 result = ps3_irq_plug_destroy(virq);
512 * ps3_vuart_irq_setup - Setup the system virtual uart virq.
516 * @virq: The assigned Linux virq.
523 unsigned int *virq)
541 result = ps3_irq_plug_setup(cpu, outlet, virq);
548 int ps3_vuart_irq_destroy(unsigned int virq)
552 ps3_chip_mask(irq_get_irq_data(virq));
561 result = ps3_irq_plug_destroy(virq);
569 * ps3_spe_irq_setup - Setup an spe virq.
574 * @virq: The assigned Linux virq.
579 unsigned int class, unsigned int *virq)
594 result = ps3_irq_plug_setup(cpu, outlet, virq);
600 int ps3_spe_irq_destroy(unsigned int virq)
604 ps3_chip_mask(irq_get_irq_data(virq));
606 result = ps3_irq_plug_destroy(virq);
658 static int ps3_host_map(struct irq_domain *h, unsigned int virq,
661 DBG("%s:%d: hwirq %lu, virq %u\n", __func__, __LINE__, hwirq,
662 virq);
664 irq_set_chip_and_handler(virq, &ps3_irq_chip, handle_fasteoi_irq);
681 void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)
685 set_bit(63 - virq, &pd->ipi_debug_brk_mask);
687 DBG("%s:%d: cpu %u, virq %u, mask %lxh\n", __func__, __LINE__,
688 cpu, virq, pd->ipi_debug_brk_mask);
691 void __init ps3_register_ipi_irq(unsigned int cpu, unsigned int virq)
695 set_bit(63 - virq, &pd->ipi_mask);
697 DBG("%s:%d: cpu %u, virq %u, ipi_mask %lxh\n", __func__, __LINE__,
698 cpu, virq, pd->ipi_mask);