Lines Matching defs:mhi_chan

248 	struct mhi_chan *mhi_chan;
270 mhi_chan = mhi_cntrl->mhi_chan;
272 for (i = 0; i < mhi_cntrl->max_chan; i++, chan_ctxt++, mhi_chan++) {
274 if (mhi_chan->offload_ch)
281 tmp |= (mhi_chan->db_cfg.brstmode << CHAN_CTX_BRSTMODE_SHIFT);
283 tmp |= (mhi_chan->db_cfg.pollcfg << CHAN_CTX_POLLCFG_SHIFT);
286 chan_ctxt->chtype = mhi_chan->type;
287 chan_ctxt->erindex = mhi_chan->er_index;
289 mhi_chan->ch_state = MHI_CH_STATE_DISABLED;
290 mhi_chan->tre_ring.db_addr = (void __iomem *)&chan_ctxt->wp;
414 struct mhi_chan *mhi_chan;
514 mhi_chan = mhi_cntrl->mhi_chan;
515 for (i = 0; i < mhi_cntrl->max_chan; i++, val += 8, mhi_chan++)
516 mhi_chan->tre_ring.db_addr = base + val;
554 struct mhi_chan *mhi_chan)
561 buf_ring = &mhi_chan->buf_ring;
562 tre_ring = &mhi_chan->tre_ring;
563 chan_ctxt = &mhi_cntrl->mhi_ctxt->chan_ctxt[mhi_chan->chan];
586 struct mhi_chan *mhi_chan)
594 buf_ring = &mhi_chan->buf_ring;
595 tre_ring = &mhi_chan->tre_ring;
598 chan_ctxt = &mhi_cntrl->mhi_ctxt->chan_ctxt[mhi_chan->chan];
625 mhi_chan->db_cfg.db_mode = 1;
667 mhi_event->mhi_chan =
668 &mhi_cntrl->mhi_chan[mhi_event->chan];
731 mhi_cntrl->mhi_chan = vzalloc(mhi_cntrl->max_chan *
732 sizeof(*mhi_cntrl->mhi_chan));
733 if (!mhi_cntrl->mhi_chan)
740 struct mhi_chan *mhi_chan;
750 mhi_chan = &mhi_cntrl->mhi_chan[chan];
751 mhi_chan->name = ch_cfg->name;
752 mhi_chan->chan = chan;
754 mhi_chan->tre_ring.elements = ch_cfg->num_elements;
755 if (!mhi_chan->tre_ring.elements)
765 mhi_chan->buf_ring.elements = ch_cfg->local_elements;
766 if (!mhi_chan->buf_ring.elements)
767 mhi_chan->buf_ring.elements = mhi_chan->tre_ring.elements;
768 mhi_chan->er_index = ch_cfg->event_ring;
769 mhi_chan->dir = ch_cfg->dir;
776 mhi_chan->type = ch_cfg->type;
777 if (!mhi_chan->type)
778 mhi_chan->type = (enum mhi_ch_type)mhi_chan->dir;
780 mhi_chan->ee_mask = ch_cfg->ee_mask;
781 mhi_chan->db_cfg.pollcfg = ch_cfg->pollcfg;
782 mhi_chan->lpm_notify = ch_cfg->lpm_notify;
783 mhi_chan->offload_ch = ch_cfg->offload_channel;
784 mhi_chan->db_cfg.reset_req = ch_cfg->doorbell_mode_switch;
785 mhi_chan->pre_alloc = ch_cfg->auto_queue;
786 mhi_chan->auto_start = ch_cfg->auto_start;
792 if (mhi_chan->pre_alloc && mhi_chan->dir != DMA_FROM_DEVICE) {
801 if ((mhi_chan->dir == DMA_BIDIRECTIONAL ||
802 mhi_chan->dir == DMA_NONE) && !mhi_chan->offload_ch) {
807 if (!mhi_chan->offload_ch) {
808 mhi_chan->db_cfg.brstmode = ch_cfg->doorbell;
809 if (MHI_INVALID_BRSTMODE(mhi_chan->db_cfg.brstmode)) {
815 if (mhi_chan->db_cfg.brstmode == MHI_DB_BRST_ENABLE)
816 mhi_chan->db_cfg.process_db = mhi_db_brstmode;
818 mhi_chan->db_cfg.process_db = mhi_db_brstmode_disable;
820 mhi_chan->configured = true;
822 if (mhi_chan->lpm_notify)
823 list_add_tail(&mhi_chan->node, &mhi_cntrl->lpm_chans);
829 vfree(mhi_cntrl->mhi_chan);
866 vfree(mhi_cntrl->mhi_chan);
875 struct mhi_chan *mhi_chan;
928 mhi_chan = mhi_cntrl->mhi_chan;
929 for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) {
930 mutex_init(&mhi_chan->mutex);
931 init_completion(&mhi_chan->completion);
932 rwlock_init(&mhi_chan->lock);
935 mhi_event = &mhi_cntrl->mhi_event[mhi_chan->er_index];
936 mhi_chan->intmod = mhi_event->intmod;
995 vfree(mhi_cntrl->mhi_chan);
1005 struct mhi_chan *mhi_chan = mhi_cntrl->mhi_chan;
1014 for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) {
1015 if (!mhi_chan->mhi_dev)
1018 put_device(&mhi_chan->mhi_dev->dev);
1020 vfree(mhi_cntrl->mhi_chan);
1123 * We need to set the mhi_chan->mhi_dev to NULL here since the MHI
1164 struct mhi_chan *ul_chan = mhi_dev->ul_chan;
1165 struct mhi_chan *dl_chan = mhi_dev->dl_chan;
1246 struct mhi_chan *mhi_chan;
1259 mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
1261 if (!mhi_chan)
1265 write_lock_irq(&mhi_chan->lock);
1266 mhi_chan->ccs = MHI_EV_CC_INVALID;
1267 complete_all(&mhi_chan->completion);
1268 write_unlock_irq(&mhi_chan->lock);
1271 mutex_lock(&mhi_chan->mutex);
1272 write_lock_irq(&mhi_chan->lock);
1273 ch_state[dir] = mhi_chan->ch_state;
1274 mhi_chan->ch_state = MHI_CH_STATE_SUSPENDED;
1275 write_unlock_irq(&mhi_chan->lock);
1278 if (!mhi_chan->offload_ch)
1279 mhi_reset_chan(mhi_cntrl, mhi_chan);
1281 mutex_unlock(&mhi_chan->mutex);
1288 mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
1290 if (!mhi_chan)
1293 mutex_lock(&mhi_chan->mutex);
1297 !mhi_chan->offload_ch)
1298 mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan);
1300 mhi_chan->ch_state = MHI_CH_STATE_DISABLED;
1302 mutex_unlock(&mhi_chan->mutex);