Lines Matching refs:qinst

150  * @qinst:	Queue instance for which we check the number of pending messages
156 struct ti_queue_inst *qinst)
165 val = readl(qinst->queue_state) & status_cnt_mask;
174 * @qinst: Queue instance for which we check the number of pending messages
179 struct ti_queue_inst *qinst)
191 val = readl(qinst->queue_state) & d->status_err_mask;
196 static int ti_msgmgr_queue_rx_data(struct mbox_chan *chan, struct ti_queue_inst *qinst,
211 message.buf = (u8 *)qinst->rx_buff;
227 for (data_reg = qinst->queue_buff_start, word_data = qinst->rx_buff,
247 struct ti_queue_inst *qinst = chan->con_priv;
252 ret = readl_poll_timeout_atomic(qinst->queue_state, msg_count,
258 ti_msgmgr_queue_rx_data(chan, qinst, desc);
277 struct ti_queue_inst *qinst = chan->con_priv;
287 if (qinst->is_tx) {
289 qinst->name);
294 if (ti_msgmgr_queue_is_error(desc, qinst)) {
295 dev_err(dev, "Error on Rx channel %s\n", qinst->name);
300 msg_count = ti_msgmgr_queue_get_num_messages(desc, qinst);
307 ti_msgmgr_queue_rx_data(chan, qinst, desc);
320 struct ti_queue_inst *qinst = chan->con_priv;
326 if (qinst->is_tx)
329 if (ti_msgmgr_queue_is_error(desc, qinst)) {
330 dev_err(dev, "Error on channel %s\n", qinst->name);
334 msg_count = ti_msgmgr_queue_get_num_messages(desc, qinst);
347 struct ti_queue_inst *qinst = chan->con_priv;
353 if (!qinst->is_tx)
356 if (ti_msgmgr_queue_is_error(desc, qinst)) {
357 dev_err(dev, "Error on channel %s\n", qinst->name);
361 msg_count = ti_msgmgr_queue_get_num_messages(desc, qinst);
374 struct ti_queue_inst *qinst;
379 qinst = chan->con_priv;
380 return qinst->polled_rx_mode;
395 struct ti_queue_inst *qinst = chan->con_priv;
408 if (ti_msgmgr_queue_is_error(desc, qinst)) {
409 dev_err(dev, "Error on channel %s\n", qinst->name);
415 qinst->name, message->len, desc->max_message_size);
420 for (data_reg = qinst->queue_buff_start,
443 while (data_reg <= qinst->queue_buff_end) {
460 * @qinst: Queue instance
465 struct ti_queue_inst *qinst,
473 "rx_%03d", d->is_sproxy ? qinst->proxy_id : qinst->queue_id);
476 if (qinst->irq < 0) {
480 qinst->irq = of_irq_get_byname(np, of_rx_irq_name);
483 if (qinst->irq < 0) {
486 qinst->queue_id, qinst->proxy_id,
487 of_rx_irq_name, qinst->irq);
488 return qinst->irq;
493 ret = request_irq(qinst->irq, ti_msgmgr_queue_rx_interrupt,
494 IRQF_SHARED, qinst->name, chan);
497 qinst->irq, qinst->name, ret);
513 struct ti_queue_inst *qinst = chan->con_priv;
523 qinst->is_tx = (readl(qinst->queue_ctrl) &
526 msg_count = ti_msgmgr_queue_get_num_messages(d, qinst);
528 if (!msg_count && qinst->is_tx) {
530 qinst->name);
535 if (!qinst->is_tx) {
537 qinst->rx_buff = kzalloc(d->max_message_size, GFP_KERNEL);
538 if (!qinst->rx_buff)
541 ret = ti_msgmgr_queue_rx_irq_req(dev, d, qinst, chan);
543 kfree(qinst->rx_buff);
557 struct ti_queue_inst *qinst = chan->con_priv;
559 if (!qinst->is_tx) {
560 free_irq(qinst->irq, chan);
561 kfree(qinst->rx_buff);
578 struct ti_queue_inst *qinst;
608 qinst = &inst->qinsts[req_pid];
609 return qinst->chan;
612 for (qinst = inst->qinsts, i = 0; i < inst->num_valid_queues;
613 i++, qinst++) {
614 if (req_qid == qinst->queue_id && req_pid == qinst->proxy_id)
615 return qinst->chan;
632 * @qinst: Queue instance pointer
642 struct ti_queue_inst *qinst,
647 qinst->proxy_id = qd->proxy_id;
648 qinst->queue_id = qd->queue_id;
650 if (qinst->queue_id > d->queue_count) {
652 idx, qinst->queue_id, d->queue_count);
657 qinst->queue_buff_start = inst->queue_proxy_region +
658 SPROXY_THREAD_DATA_OFFSET(qinst->proxy_id,
660 qinst->queue_buff_end = inst->queue_proxy_region +
661 SPROXY_THREAD_DATA_OFFSET(qinst->proxy_id,
663 qinst->queue_state = inst->queue_state_debug_region +
664 SPROXY_THREAD_STATUS_OFFSET(qinst->proxy_id);
665 qinst->queue_ctrl = inst->queue_ctrl_region +
666 SPROXY_THREAD_CTRL_OFFSET(qinst->proxy_id);
670 snprintf(qinst->name, sizeof(qinst->name), "%s %s_%03d",
671 dev_name(dev), dir, qinst->proxy_id);
673 qinst->queue_buff_start = inst->queue_proxy_region +
674 Q_DATA_OFFSET(qinst->proxy_id, qinst->queue_id,
676 qinst->queue_buff_end = inst->queue_proxy_region +
677 Q_DATA_OFFSET(qinst->proxy_id, qinst->queue_id,
679 qinst->queue_state =
681 Q_STATE_OFFSET(qinst->queue_id);
682 qinst->is_tx = qd->is_tx;
683 dir = qinst->is_tx ? "tx" : "rx";
684 snprintf(qinst->name, sizeof(qinst->name), "%s %s_%03d_%03d",
685 dev_name(dev), dir, qinst->queue_id, qinst->proxy_id);
688 qinst->chan = chan;
691 qinst->irq = -EINVAL;
693 chan->con_priv = qinst;
696 idx, qinst->queue_id, qinst->proxy_id, qinst->irq,
697 qinst->queue_buff_start, qinst->queue_buff_end);
701 static int ti_msgmgr_queue_rx_set_polled_mode(struct ti_queue_inst *qinst, bool enable)
704 disable_irq(qinst->irq);
705 qinst->polled_rx_mode = true;
707 enable_irq(qinst->irq);
708 qinst->polled_rx_mode = false;
717 struct ti_queue_inst *qinst;
725 for (qinst = inst->qinsts, i = 0; i < inst->num_valid_queues; qinst++, i++) {
726 if (!qinst->is_tx)
727 ti_msgmgr_queue_rx_set_polled_mode(qinst, true);
736 struct ti_queue_inst *qinst;
739 for (qinst = inst->qinsts, i = 0; i < inst->num_valid_queues; qinst++, i++) {
740 if (!qinst->is_tx)
741 ti_msgmgr_queue_rx_set_polled_mode(qinst, false);
817 struct ti_queue_inst *qinst;
873 qinst = devm_kcalloc(dev, queue_count, sizeof(*qinst), GFP_KERNEL);
874 if (!qinst)
876 inst->qinsts = qinst;
887 for (i = 0; i < queue_count; i++, qinst++, chans++) {
891 desc, &sproxy_desc, qinst,
899 i < queue_count; i++, qinst++, chans++, queue_desc++) {
901 desc, queue_desc, qinst,