Lines Matching refs:qinst

156 				 struct ti_queue_inst *qinst)  in ti_msgmgr_queue_get_num_messages()  argument
165 val = readl(qinst->queue_state) & status_cnt_mask; in ti_msgmgr_queue_get_num_messages()
179 struct ti_queue_inst *qinst) in ti_msgmgr_queue_is_error() argument
191 val = readl(qinst->queue_state) & d->status_err_mask; in ti_msgmgr_queue_is_error()
196 static int ti_msgmgr_queue_rx_data(struct mbox_chan *chan, struct ti_queue_inst *qinst, in ti_msgmgr_queue_rx_data() argument
211 message.buf = (u8 *)qinst->rx_buff; in ti_msgmgr_queue_rx_data()
227 for (data_reg = qinst->queue_buff_start, word_data = qinst->rx_buff, in ti_msgmgr_queue_rx_data()
247 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_queue_rx_poll_timeout() local
252 ret = readl_poll_timeout_atomic(qinst->queue_state, msg_count, in ti_msgmgr_queue_rx_poll_timeout()
258 ti_msgmgr_queue_rx_data(chan, qinst, desc); in ti_msgmgr_queue_rx_poll_timeout()
277 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_queue_rx_interrupt() local
287 if (qinst->is_tx) { in ti_msgmgr_queue_rx_interrupt()
289 qinst->name); in ti_msgmgr_queue_rx_interrupt()
294 if (ti_msgmgr_queue_is_error(desc, qinst)) { in ti_msgmgr_queue_rx_interrupt()
295 dev_err(dev, "Error on Rx channel %s\n", qinst->name); in ti_msgmgr_queue_rx_interrupt()
300 msg_count = ti_msgmgr_queue_get_num_messages(desc, qinst); in ti_msgmgr_queue_rx_interrupt()
307 ti_msgmgr_queue_rx_data(chan, qinst, desc); in ti_msgmgr_queue_rx_interrupt()
320 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_queue_peek_data() local
326 if (qinst->is_tx) in ti_msgmgr_queue_peek_data()
329 if (ti_msgmgr_queue_is_error(desc, qinst)) { in ti_msgmgr_queue_peek_data()
330 dev_err(dev, "Error on channel %s\n", qinst->name); in ti_msgmgr_queue_peek_data()
334 msg_count = ti_msgmgr_queue_get_num_messages(desc, qinst); in ti_msgmgr_queue_peek_data()
347 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_last_tx_done() local
353 if (!qinst->is_tx) in ti_msgmgr_last_tx_done()
356 if (ti_msgmgr_queue_is_error(desc, qinst)) { in ti_msgmgr_last_tx_done()
357 dev_err(dev, "Error on channel %s\n", qinst->name); in ti_msgmgr_last_tx_done()
361 msg_count = ti_msgmgr_queue_get_num_messages(desc, qinst); in ti_msgmgr_last_tx_done()
374 struct ti_queue_inst *qinst; in ti_msgmgr_chan_has_polled_queue_rx() local
379 qinst = chan->con_priv; in ti_msgmgr_chan_has_polled_queue_rx()
380 return qinst->polled_rx_mode; in ti_msgmgr_chan_has_polled_queue_rx()
395 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_send_data() local
408 if (ti_msgmgr_queue_is_error(desc, qinst)) { in ti_msgmgr_send_data()
409 dev_err(dev, "Error on channel %s\n", qinst->name); in ti_msgmgr_send_data()
415 qinst->name, message->len, desc->max_message_size); in ti_msgmgr_send_data()
420 for (data_reg = qinst->queue_buff_start, in ti_msgmgr_send_data()
439 if (data_reg <= qinst->queue_buff_end) in ti_msgmgr_send_data()
440 writel(0, qinst->queue_buff_end); in ti_msgmgr_send_data()
459 struct ti_queue_inst *qinst, in ti_msgmgr_queue_rx_irq_req() argument
467 "rx_%03d", d->is_sproxy ? qinst->proxy_id : qinst->queue_id); in ti_msgmgr_queue_rx_irq_req()
470 if (qinst->irq < 0) { in ti_msgmgr_queue_rx_irq_req()
474 qinst->irq = of_irq_get_byname(np, of_rx_irq_name); in ti_msgmgr_queue_rx_irq_req()
477 if (qinst->irq < 0) { in ti_msgmgr_queue_rx_irq_req()
480 qinst->queue_id, qinst->proxy_id, in ti_msgmgr_queue_rx_irq_req()
481 of_rx_irq_name, qinst->irq); in ti_msgmgr_queue_rx_irq_req()
482 return qinst->irq; in ti_msgmgr_queue_rx_irq_req()
487 ret = request_irq(qinst->irq, ti_msgmgr_queue_rx_interrupt, in ti_msgmgr_queue_rx_irq_req()
488 IRQF_SHARED, qinst->name, chan); in ti_msgmgr_queue_rx_irq_req()
491 qinst->irq, qinst->name, ret); in ti_msgmgr_queue_rx_irq_req()
507 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_queue_startup() local
517 qinst->is_tx = (readl(qinst->queue_ctrl) & in ti_msgmgr_queue_startup()
520 msg_count = ti_msgmgr_queue_get_num_messages(d, qinst); in ti_msgmgr_queue_startup()
522 if (!msg_count && qinst->is_tx) { in ti_msgmgr_queue_startup()
524 qinst->name); in ti_msgmgr_queue_startup()
529 if (!qinst->is_tx) { in ti_msgmgr_queue_startup()
531 qinst->rx_buff = kzalloc(d->max_message_size, GFP_KERNEL); in ti_msgmgr_queue_startup()
532 if (!qinst->rx_buff) in ti_msgmgr_queue_startup()
535 ret = ti_msgmgr_queue_rx_irq_req(dev, d, qinst, chan); in ti_msgmgr_queue_startup()
537 kfree(qinst->rx_buff); in ti_msgmgr_queue_startup()
551 struct ti_queue_inst *qinst = chan->con_priv; in ti_msgmgr_queue_shutdown() local
553 if (!qinst->is_tx) { in ti_msgmgr_queue_shutdown()
554 free_irq(qinst->irq, chan); in ti_msgmgr_queue_shutdown()
555 kfree(qinst->rx_buff); in ti_msgmgr_queue_shutdown()
572 struct ti_queue_inst *qinst; in ti_msgmgr_of_xlate() local
602 qinst = &inst->qinsts[req_pid]; in ti_msgmgr_of_xlate()
603 return qinst->chan; in ti_msgmgr_of_xlate()
606 for (qinst = inst->qinsts, i = 0; i < inst->num_valid_queues; in ti_msgmgr_of_xlate()
607 i++, qinst++) { in ti_msgmgr_of_xlate()
608 if (req_qid == qinst->queue_id && req_pid == qinst->proxy_id) in ti_msgmgr_of_xlate()
609 return qinst->chan; in ti_msgmgr_of_xlate()
636 struct ti_queue_inst *qinst, in ti_msgmgr_queue_setup() argument
641 qinst->proxy_id = qd->proxy_id; in ti_msgmgr_queue_setup()
642 qinst->queue_id = qd->queue_id; in ti_msgmgr_queue_setup()
644 if (qinst->queue_id > d->queue_count) { in ti_msgmgr_queue_setup()
646 idx, qinst->queue_id, d->queue_count); in ti_msgmgr_queue_setup()
651 qinst->queue_buff_start = inst->queue_proxy_region + in ti_msgmgr_queue_setup()
652 SPROXY_THREAD_DATA_OFFSET(qinst->proxy_id, in ti_msgmgr_queue_setup()
654 qinst->queue_buff_end = inst->queue_proxy_region + in ti_msgmgr_queue_setup()
655 SPROXY_THREAD_DATA_OFFSET(qinst->proxy_id, in ti_msgmgr_queue_setup()
657 qinst->queue_state = inst->queue_state_debug_region + in ti_msgmgr_queue_setup()
658 SPROXY_THREAD_STATUS_OFFSET(qinst->proxy_id); in ti_msgmgr_queue_setup()
659 qinst->queue_ctrl = inst->queue_ctrl_region + in ti_msgmgr_queue_setup()
660 SPROXY_THREAD_CTRL_OFFSET(qinst->proxy_id); in ti_msgmgr_queue_setup()
664 snprintf(qinst->name, sizeof(qinst->name), "%s %s_%03d", in ti_msgmgr_queue_setup()
665 dev_name(dev), dir, qinst->proxy_id); in ti_msgmgr_queue_setup()
667 qinst->queue_buff_start = inst->queue_proxy_region + in ti_msgmgr_queue_setup()
668 Q_DATA_OFFSET(qinst->proxy_id, qinst->queue_id, in ti_msgmgr_queue_setup()
670 qinst->queue_buff_end = inst->queue_proxy_region + in ti_msgmgr_queue_setup()
671 Q_DATA_OFFSET(qinst->proxy_id, qinst->queue_id, in ti_msgmgr_queue_setup()
673 qinst->queue_state = in ti_msgmgr_queue_setup()
675 Q_STATE_OFFSET(qinst->queue_id); in ti_msgmgr_queue_setup()
676 qinst->is_tx = qd->is_tx; in ti_msgmgr_queue_setup()
677 dir = qinst->is_tx ? "tx" : "rx"; in ti_msgmgr_queue_setup()
678 snprintf(qinst->name, sizeof(qinst->name), "%s %s_%03d_%03d", in ti_msgmgr_queue_setup()
679 dev_name(dev), dir, qinst->queue_id, qinst->proxy_id); in ti_msgmgr_queue_setup()
682 qinst->chan = chan; in ti_msgmgr_queue_setup()
685 qinst->irq = -EINVAL; in ti_msgmgr_queue_setup()
687 chan->con_priv = qinst; in ti_msgmgr_queue_setup()
690 idx, qinst->queue_id, qinst->proxy_id, qinst->irq, in ti_msgmgr_queue_setup()
691 qinst->queue_buff_start, qinst->queue_buff_end); in ti_msgmgr_queue_setup()
695 static int ti_msgmgr_queue_rx_set_polled_mode(struct ti_queue_inst *qinst, bool enable) in ti_msgmgr_queue_rx_set_polled_mode() argument
698 disable_irq(qinst->irq); in ti_msgmgr_queue_rx_set_polled_mode()
699 qinst->polled_rx_mode = true; in ti_msgmgr_queue_rx_set_polled_mode()
701 enable_irq(qinst->irq); in ti_msgmgr_queue_rx_set_polled_mode()
702 qinst->polled_rx_mode = false; in ti_msgmgr_queue_rx_set_polled_mode()
711 struct ti_queue_inst *qinst; in ti_msgmgr_suspend() local
719 for (qinst = inst->qinsts, i = 0; i < inst->num_valid_queues; qinst++, i++) { in ti_msgmgr_suspend()
720 if (!qinst->is_tx) in ti_msgmgr_suspend()
721 ti_msgmgr_queue_rx_set_polled_mode(qinst, true); in ti_msgmgr_suspend()
730 struct ti_queue_inst *qinst; in ti_msgmgr_resume() local
733 for (qinst = inst->qinsts, i = 0; i < inst->num_valid_queues; qinst++, i++) { in ti_msgmgr_resume()
734 if (!qinst->is_tx) in ti_msgmgr_resume()
735 ti_msgmgr_queue_rx_set_polled_mode(qinst, false); in ti_msgmgr_resume()
812 struct ti_queue_inst *qinst; in ti_msgmgr_probe() local
871 qinst = devm_kcalloc(dev, queue_count, sizeof(*qinst), GFP_KERNEL); in ti_msgmgr_probe()
872 if (!qinst) in ti_msgmgr_probe()
874 inst->qinsts = qinst; in ti_msgmgr_probe()
885 for (i = 0; i < queue_count; i++, qinst++, chans++) { in ti_msgmgr_probe()
889 desc, &sproxy_desc, qinst, in ti_msgmgr_probe()
897 i < queue_count; i++, qinst++, chans++, queue_desc++) { in ti_msgmgr_probe()
899 desc, queue_desc, qinst, in ti_msgmgr_probe()