Lines Matching refs:irq_ptr
78 void tiqdio_add_input_queues(struct qdio_irq *irq_ptr) in tiqdio_add_input_queues() argument
81 list_add_rcu(&irq_ptr->input_qs[0]->entry, &tiq_list); in tiqdio_add_input_queues()
83 xchg(irq_ptr->dsci, 1 << 7); in tiqdio_add_input_queues()
86 void tiqdio_remove_input_queues(struct qdio_irq *irq_ptr) in tiqdio_remove_input_queues() argument
90 q = irq_ptr->input_qs[0]; in tiqdio_remove_input_queues()
101 static inline int has_multiple_inq_on_dsci(struct qdio_irq *irq_ptr) in has_multiple_inq_on_dsci() argument
103 return irq_ptr->nr_input_qs > 1; in has_multiple_inq_on_dsci()
106 static inline int references_shared_dsci(struct qdio_irq *irq_ptr) in references_shared_dsci() argument
108 return irq_ptr->dsci == &q_indicators[TIQDIO_SHARED_IND].ind; in references_shared_dsci()
111 static inline int shared_ind(struct qdio_irq *irq_ptr) in shared_ind() argument
113 return references_shared_dsci(irq_ptr) || in shared_ind()
114 has_multiple_inq_on_dsci(irq_ptr); in shared_ind()
117 void clear_nonshared_ind(struct qdio_irq *irq_ptr) in clear_nonshared_ind() argument
119 if (!is_thinint_irq(irq_ptr)) in clear_nonshared_ind()
121 if (shared_ind(irq_ptr)) in clear_nonshared_ind()
123 xchg(irq_ptr->dsci, 0); in clear_nonshared_ind()
126 int test_nonshared_ind(struct qdio_irq *irq_ptr) in test_nonshared_ind() argument
128 if (!is_thinint_irq(irq_ptr)) in test_nonshared_ind()
130 if (shared_ind(irq_ptr)) in test_nonshared_ind()
132 if (*irq_ptr->dsci) in test_nonshared_ind()
153 xchg(q->irq_ptr->dsci, 0); in tiqdio_call_inq_handlers()
164 q->u.in.queue_start_poll(q->irq_ptr->cdev, q->nr, in tiqdio_call_inq_handlers()
165 q->irq_ptr->int_parm); in tiqdio_call_inq_handlers()
167 if (!shared_ind(q->irq_ptr)) in tiqdio_call_inq_handlers()
168 xchg(q->irq_ptr->dsci, 0); in tiqdio_call_inq_handlers()
200 irq = q->irq_ptr; in tiqdio_thinint_handler()
214 static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset) in set_subchannel_ind() argument
216 struct chsc_scssc_area *scssc = (void *)irq_ptr->chsc_page; in set_subchannel_ind()
225 subchannel_indicator_addr = virt_to_phys(irq_ptr->dsci); in set_subchannel_ind()
228 rc = chsc_sadc(irq_ptr->schid, scssc, summary_indicator_addr, in set_subchannel_ind()
231 DBF_ERROR("%4x SSI r:%4x", irq_ptr->schid.sch_no, in set_subchannel_ind()
270 int qdio_establish_thinint(struct qdio_irq *irq_ptr) in qdio_establish_thinint() argument
272 if (!is_thinint_irq(irq_ptr)) in qdio_establish_thinint()
274 return set_subchannel_ind(irq_ptr, 0); in qdio_establish_thinint()
277 void qdio_setup_thinint(struct qdio_irq *irq_ptr) in qdio_setup_thinint() argument
279 if (!is_thinint_irq(irq_ptr)) in qdio_setup_thinint()
281 irq_ptr->dsci = get_indicator(); in qdio_setup_thinint()
282 DBF_HEX(&irq_ptr->dsci, sizeof(void *)); in qdio_setup_thinint()
285 void qdio_shutdown_thinint(struct qdio_irq *irq_ptr) in qdio_shutdown_thinint() argument
287 if (!is_thinint_irq(irq_ptr)) in qdio_shutdown_thinint()
291 set_subchannel_ind(irq_ptr, 1); in qdio_shutdown_thinint()
292 put_indicator(irq_ptr->dsci); in qdio_shutdown_thinint()