Lines Matching refs:virq
46 * implementation equates HV plug value to Linux virq value, constrains each
90 * @virq: The assigned Linux virq.
100 DBG("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
111 * @virq: The assigned Linux virq.
121 DBG("%s:%d: thread_id %llu, virq %d\n", __func__, __LINE__,
132 * @virq: The assigned Linux virq.
159 * ps3_virq_setup - virq related setup.
163 * @virq: The assigned Linux virq.
165 * Calls irq_create_mapping() to get a virq and sets the chip data to
170 unsigned int *virq)
182 *virq = irq_create_mapping(NULL, outlet);
184 if (!*virq) {
191 DBG("%s:%d: outlet %lu => cpu %u, virq %u\n", __func__, __LINE__,
192 outlet, cpu, *virq);
194 result = irq_set_chip_data(*virq, pd);
202 ps3_chip_mask(irq_get_irq_data(*virq));
207 irq_dispose_mapping(*virq);
213 * ps3_virq_destroy - virq related teardown.
214 * @virq: The assigned Linux virq.
216 * Clears chip data and calls irq_dispose_mapping() for the virq.
219 static int ps3_virq_destroy(unsigned int virq)
221 const struct ps3_private *pd = irq_get_chip_data(virq);
223 DBG("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__,
224 __LINE__, pd->ppe_id, pd->thread_id, virq);
226 irq_set_chip_data(virq, NULL);
227 irq_dispose_mapping(virq);
234 * ps3_irq_plug_setup - Generic outlet and virq related setup.
238 * @virq: The assigned Linux virq.
240 * Sets up virq and connects the irq plug.
244 unsigned int *virq)
249 result = ps3_virq_setup(cpu, outlet, virq);
256 pd = irq_get_chip_data(*virq);
258 /* Binds outlet to cpu + virq. */
260 result = lv1_connect_irq_plug_ext(pd->ppe_id, pd->thread_id, *virq,
273 ps3_virq_destroy(*virq);
280 * ps3_irq_plug_destroy - Generic outlet and virq related teardown.
281 * @virq: The assigned Linux virq.
283 * Disconnects the irq plug and tears down virq.
288 int ps3_irq_plug_destroy(unsigned int virq)
291 const struct ps3_private *pd = irq_get_chip_data(virq);
293 DBG("%s:%d: ppe_id %llu, thread_id %llu, virq %u\n", __func__,
294 __LINE__, pd->ppe_id, pd->thread_id, virq);
296 ps3_chip_mask(irq_get_irq_data(virq));
298 result = lv1_disconnect_irq_plug_ext(pd->ppe_id, pd->thread_id, virq);
304 ps3_virq_destroy(virq);
314 * @virq: The assigned Linux virq.
316 * The virq can be used with lv1_connect_interrupt_event_receive_port() to
321 int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq)
331 *virq = 0;
335 result = ps3_irq_plug_setup(cpu, outlet, virq);
344 * @virq: The assigned Linux virq.
351 int ps3_event_receive_port_destroy(unsigned int virq)
355 DBG(" -> %s:%d virq %u\n", __func__, __LINE__, virq);
357 ps3_chip_mask(irq_get_irq_data(virq));
359 result = lv1_destruct_event_receive_port(virq_to_hw(virq));
374 int ps3_send_event_locally(unsigned int virq)
376 return lv1_send_event_locally(virq_to_hw(virq));
384 * @virq: The assigned Linux virq.
391 enum ps3_cpu_binding cpu, unsigned int *virq)
397 result = ps3_event_receive_port_setup(cpu, virq);
403 dev->dev_id, virq_to_hw(*virq), dev->interrupt_id);
409 ps3_event_receive_port_destroy(*virq);
410 *virq = 0;
414 DBG("%s:%d: interrupt_id %u, virq %u\n", __func__, __LINE__,
415 dev->interrupt_id, *virq);
422 unsigned int virq)
428 DBG(" -> %s:%d: interrupt_id %u, virq %u\n", __func__, __LINE__,
429 dev->interrupt_id, virq);
432 dev->dev_id, virq_to_hw(virq), dev->interrupt_id);
439 result = ps3_event_receive_port_destroy(virq);
447 result = ps3_virq_destroy(virq);
460 * @virq: The assigned Linux virq.
467 unsigned int *virq)
480 result = ps3_irq_plug_setup(cpu, outlet, virq);
487 int ps3_io_irq_destroy(unsigned int virq)
490 unsigned long outlet = virq_to_hw(virq);
492 ps3_chip_mask(irq_get_irq_data(virq));
499 result = ps3_irq_plug_destroy(virq);
513 * ps3_vuart_irq_setup - Setup the system virtual uart virq.
517 * @virq: The assigned Linux virq.
524 unsigned int *virq)
542 result = ps3_irq_plug_setup(cpu, outlet, virq);
549 int ps3_vuart_irq_destroy(unsigned int virq)
553 ps3_chip_mask(irq_get_irq_data(virq));
562 result = ps3_irq_plug_destroy(virq);
570 * ps3_spe_irq_setup - Setup an spe virq.
575 * @virq: The assigned Linux virq.
580 unsigned int class, unsigned int *virq)
595 result = ps3_irq_plug_setup(cpu, outlet, virq);
601 int ps3_spe_irq_destroy(unsigned int virq)
605 ps3_chip_mask(irq_get_irq_data(virq));
607 result = ps3_irq_plug_destroy(virq);
659 static int ps3_host_map(struct irq_domain *h, unsigned int virq,
662 DBG("%s:%d: hwirq %lu, virq %u\n", __func__, __LINE__, hwirq,
663 virq);
665 irq_set_chip_and_handler(virq, &ps3_irq_chip, handle_fasteoi_irq);
682 void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)
686 set_bit(63 - virq, &pd->ipi_debug_brk_mask);
688 DBG("%s:%d: cpu %u, virq %u, mask %lxh\n", __func__, __LINE__,
689 cpu, virq, pd->ipi_debug_brk_mask);
692 void __init ps3_register_ipi_irq(unsigned int cpu, unsigned int virq)
696 set_bit(63 - virq, &pd->ipi_mask);
698 DBG("%s:%d: cpu %u, virq %u, ipi_mask %lxh\n", __func__, __LINE__,
699 cpu, virq, pd->ipi_mask);