Lines Matching refs:irq_ptr
101 static void set_impl_params(struct qdio_irq *irq_ptr, in set_impl_params() argument
110 if (!irq_ptr) in set_impl_params()
113 irq_ptr->qib.pfmt = qib_param_field_format; in set_impl_params()
115 memcpy(irq_ptr->qib.parm, qib_param_field, in set_impl_params()
116 sizeof(irq_ptr->qib.parm)); in set_impl_params()
121 for_each_input_queue(irq_ptr, q, i) { in set_impl_params()
130 for_each_output_queue(irq_ptr, q, i) { in set_impl_params()
158 int qdio_allocate_qs(struct qdio_irq *irq_ptr, int nr_input_qs, int nr_output_qs) in qdio_allocate_qs() argument
162 rc = __qdio_allocate_qs(irq_ptr->input_qs, nr_input_qs); in qdio_allocate_qs()
165 rc = __qdio_allocate_qs(irq_ptr->output_qs, nr_output_qs); in qdio_allocate_qs()
169 static void setup_queues_misc(struct qdio_q *q, struct qdio_irq *irq_ptr, in setup_queues_misc() argument
178 q->irq_ptr = irq_ptr; in setup_queues_misc()
185 static void setup_storage_lists(struct qdio_q *q, struct qdio_irq *irq_ptr, in setup_storage_lists() argument
200 prev = (q->is_input_q) ? irq_ptr->input_qs[i - 1] in setup_storage_lists()
201 : irq_ptr->output_qs[i - 1]; in setup_storage_lists()
213 static void setup_queues(struct qdio_irq *irq_ptr, in setup_queues() argument
223 for_each_input_queue(irq_ptr, q, i) { in setup_queues()
225 setup_queues_misc(q, irq_ptr, qdio_init->input_handler, i); in setup_queues()
231 setup_storage_lists(q, irq_ptr, input_sbal_array, i); in setup_queues()
234 if (is_thinint_irq(irq_ptr)) { in setup_queues()
243 for_each_output_queue(irq_ptr, q, i) { in setup_queues()
245 setup_queues_misc(q, irq_ptr, qdio_init->output_handler, i); in setup_queues()
251 setup_storage_lists(q, irq_ptr, output_sbal_array, i); in setup_queues()
260 static void process_ac_flags(struct qdio_irq *irq_ptr, unsigned char qdioac) in process_ac_flags() argument
263 irq_ptr->siga_flag.input = 1; in process_ac_flags()
265 irq_ptr->siga_flag.output = 1; in process_ac_flags()
267 irq_ptr->siga_flag.sync = 1; in process_ac_flags()
269 irq_ptr->siga_flag.sync_after_ai = 1; in process_ac_flags()
271 irq_ptr->siga_flag.sync_out_after_pci = 1; in process_ac_flags()
274 static void check_and_setup_qebsm(struct qdio_irq *irq_ptr, in check_and_setup_qebsm() argument
277 if (!(irq_ptr->qib.rflags & QIB_RFLAGS_ENABLE_QEBSM)) in check_and_setup_qebsm()
283 irq_ptr->sch_token = token; in check_and_setup_qebsm()
286 DBF_EVENT("%8lx", irq_ptr->sch_token); in check_and_setup_qebsm()
290 irq_ptr->sch_token = 0; in check_and_setup_qebsm()
291 irq_ptr->qib.rflags &= ~QIB_RFLAGS_ENABLE_QEBSM; in check_and_setup_qebsm()
299 int qdio_setup_get_ssqd(struct qdio_irq *irq_ptr, in qdio_setup_get_ssqd() argument
307 if (!irq_ptr) { in qdio_setup_get_ssqd()
312 ssqd = (struct chsc_ssqd_area *)irq_ptr->chsc_page; in qdio_setup_get_ssqd()
328 if (!irq_ptr) in qdio_setup_get_ssqd()
334 void qdio_setup_ssqd_info(struct qdio_irq *irq_ptr) in qdio_setup_ssqd_info() argument
339 rc = qdio_setup_get_ssqd(irq_ptr, &irq_ptr->schid, &irq_ptr->ssqd_desc); in qdio_setup_ssqd_info()
341 DBF_ERROR("%4x ssqd ERR", irq_ptr->schid.sch_no); in qdio_setup_ssqd_info()
347 qdioac = irq_ptr->ssqd_desc.qdioac1; in qdio_setup_ssqd_info()
349 check_and_setup_qebsm(irq_ptr, qdioac, irq_ptr->ssqd_desc.sch_token); in qdio_setup_ssqd_info()
350 process_ac_flags(irq_ptr, qdioac); in qdio_setup_ssqd_info()
351 DBF_EVENT("ac 1:%2x 2:%4x", qdioac, irq_ptr->ssqd_desc.qdioac2); in qdio_setup_ssqd_info()
352 DBF_EVENT("3:%4x qib:%4x", irq_ptr->ssqd_desc.qdioac3, irq_ptr->qib.ac); in qdio_setup_ssqd_info()
355 void qdio_release_memory(struct qdio_irq *irq_ptr) in qdio_release_memory() argument
365 q = irq_ptr->input_qs[i]; in qdio_release_memory()
372 q = irq_ptr->output_qs[i]; in qdio_release_memory()
391 free_page((unsigned long) irq_ptr->qdr); in qdio_release_memory()
392 free_page(irq_ptr->chsc_page); in qdio_release_memory()
393 free_page((unsigned long) irq_ptr); in qdio_release_memory()
396 static void __qdio_allocate_fill_qdr(struct qdio_irq *irq_ptr, in __qdio_allocate_fill_qdr() argument
400 irq_ptr->qdr->qdf0[i + nr].sliba = in __qdio_allocate_fill_qdr()
403 irq_ptr->qdr->qdf0[i + nr].sla = in __qdio_allocate_fill_qdr()
406 irq_ptr->qdr->qdf0[i + nr].slsba = in __qdio_allocate_fill_qdr()
409 irq_ptr->qdr->qdf0[i + nr].akey = PAGE_DEFAULT_KEY >> 4; in __qdio_allocate_fill_qdr()
410 irq_ptr->qdr->qdf0[i + nr].bkey = PAGE_DEFAULT_KEY >> 4; in __qdio_allocate_fill_qdr()
411 irq_ptr->qdr->qdf0[i + nr].ckey = PAGE_DEFAULT_KEY >> 4; in __qdio_allocate_fill_qdr()
412 irq_ptr->qdr->qdf0[i + nr].dkey = PAGE_DEFAULT_KEY >> 4; in __qdio_allocate_fill_qdr()
415 static void setup_qdr(struct qdio_irq *irq_ptr, in setup_qdr() argument
420 irq_ptr->qdr->qfmt = qdio_init->q_format; in setup_qdr()
421 irq_ptr->qdr->ac = qdio_init->qdr_ac; in setup_qdr()
422 irq_ptr->qdr->iqdcnt = qdio_init->no_input_qs; in setup_qdr()
423 irq_ptr->qdr->oqdcnt = qdio_init->no_output_qs; in setup_qdr()
424 irq_ptr->qdr->iqdsz = sizeof(struct qdesfmt0) / 4; /* size in words */ in setup_qdr()
425 irq_ptr->qdr->oqdsz = sizeof(struct qdesfmt0) / 4; in setup_qdr()
426 irq_ptr->qdr->qiba = (unsigned long)&irq_ptr->qib; in setup_qdr()
427 irq_ptr->qdr->qkey = PAGE_DEFAULT_KEY >> 4; in setup_qdr()
430 __qdio_allocate_fill_qdr(irq_ptr, irq_ptr->input_qs, i, 0); in setup_qdr()
433 __qdio_allocate_fill_qdr(irq_ptr, irq_ptr->output_qs, i, in setup_qdr()
437 static void setup_qib(struct qdio_irq *irq_ptr, in setup_qib() argument
441 irq_ptr->qib.rflags |= QIB_RFLAGS_ENABLE_QEBSM; in setup_qib()
443 irq_ptr->qib.rflags |= init_data->qib_rflags; in setup_qib()
445 irq_ptr->qib.qfmt = init_data->q_format; in setup_qib()
447 irq_ptr->qib.isliba = in setup_qib()
448 (unsigned long)(irq_ptr->input_qs[0]->slib); in setup_qib()
450 irq_ptr->qib.osliba = in setup_qib()
451 (unsigned long)(irq_ptr->output_qs[0]->slib); in setup_qib()
452 memcpy(irq_ptr->qib.ebcnam, init_data->adapter_name, 8); in setup_qib()
458 struct qdio_irq *irq_ptr = init_data->cdev->private->qdio_data; in qdio_setup_irq() local
460 memset(&irq_ptr->qib, 0, sizeof(irq_ptr->qib)); in qdio_setup_irq()
461 memset(&irq_ptr->siga_flag, 0, sizeof(irq_ptr->siga_flag)); in qdio_setup_irq()
462 memset(&irq_ptr->ccw, 0, sizeof(irq_ptr->ccw)); in qdio_setup_irq()
463 memset(&irq_ptr->ssqd_desc, 0, sizeof(irq_ptr->ssqd_desc)); in qdio_setup_irq()
464 memset(&irq_ptr->perf_stat, 0, sizeof(irq_ptr->perf_stat)); in qdio_setup_irq()
466 irq_ptr->debugfs_dev = irq_ptr->debugfs_perf = NULL; in qdio_setup_irq()
467 irq_ptr->sch_token = irq_ptr->state = irq_ptr->perf_stat_enabled = 0; in qdio_setup_irq()
470 memset(irq_ptr->qdr, 0, sizeof(struct qdr)); in qdio_setup_irq()
472 irq_ptr->int_parm = init_data->int_parm; in qdio_setup_irq()
473 irq_ptr->nr_input_qs = init_data->no_input_qs; in qdio_setup_irq()
474 irq_ptr->nr_output_qs = init_data->no_output_qs; in qdio_setup_irq()
475 irq_ptr->cdev = init_data->cdev; in qdio_setup_irq()
476 irq_ptr->scan_threshold = init_data->scan_threshold; in qdio_setup_irq()
477 ccw_device_get_schid(irq_ptr->cdev, &irq_ptr->schid); in qdio_setup_irq()
478 setup_queues(irq_ptr, init_data); in qdio_setup_irq()
480 setup_qib(irq_ptr, init_data); in qdio_setup_irq()
481 qdio_setup_thinint(irq_ptr); in qdio_setup_irq()
482 set_impl_params(irq_ptr, init_data->qib_param_field_format, in qdio_setup_irq()
488 setup_qdr(irq_ptr, init_data); in qdio_setup_irq()
495 DBF_ERROR("%4x NO EQ", irq_ptr->schid.sch_no); in qdio_setup_irq()
498 irq_ptr->equeue = *ciw; in qdio_setup_irq()
502 DBF_ERROR("%4x NO AQ", irq_ptr->schid.sch_no); in qdio_setup_irq()
505 irq_ptr->aqueue = *ciw; in qdio_setup_irq()
508 spin_lock_irq(get_ccwdev_lock(irq_ptr->cdev)); in qdio_setup_irq()
509 irq_ptr->orig_handler = init_data->cdev->handler; in qdio_setup_irq()
511 spin_unlock_irq(get_ccwdev_lock(irq_ptr->cdev)); in qdio_setup_irq()
515 void qdio_print_subchannel_info(struct qdio_irq *irq_ptr, in qdio_print_subchannel_info() argument
523 (irq_ptr->qib.qfmt == QDIO_QETH_QFMT) ? "OSA" : in qdio_print_subchannel_info()
524 ((irq_ptr->qib.qfmt == QDIO_ZFCP_QFMT) ? "ZFCP" : "HS"), in qdio_print_subchannel_info()
525 irq_ptr->schid.sch_no, in qdio_print_subchannel_info()
526 is_thinint_irq(irq_ptr), in qdio_print_subchannel_info()
527 (irq_ptr->sch_token) ? 1 : 0, in qdio_print_subchannel_info()
528 pci_out_supported(irq_ptr) ? 1 : 0, in qdio_print_subchannel_info()
530 (irq_ptr->siga_flag.input) ? "R" : " ", in qdio_print_subchannel_info()
531 (irq_ptr->siga_flag.output) ? "W" : " ", in qdio_print_subchannel_info()
532 (irq_ptr->siga_flag.sync) ? "S" : " ", in qdio_print_subchannel_info()
533 (irq_ptr->siga_flag.sync_after_ai) ? "A" : " ", in qdio_print_subchannel_info()
534 (irq_ptr->siga_flag.sync_out_after_pci) ? "P" : " "); in qdio_print_subchannel_info()