drivers/bus/mhi/ep/main.c
1025
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
1030
mhi_chan = &mhi_cntrl->mhi_chan[i];
drivers/bus/mhi/ep/main.c
1031
if (!mhi_chan->ring.started)
drivers/bus/mhi/ep/main.c
1034
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1036
if (mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
1039
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/ep/main.c
1042
mhi_chan->state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/ep/main.c
1043
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1053
mhi_chan = &mhi_cntrl->mhi_chan[i];
drivers/bus/mhi/ep/main.c
1054
if (!mhi_chan->ring.started)
drivers/bus/mhi/ep/main.c
1057
ch_ring = &mhi_cntrl->mhi_chan[i].ring;
drivers/bus/mhi/ep/main.c
1058
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1060
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1147
mhi_ep_ring_init(&mhi_cntrl->mhi_chan[i].ring, RING_TYPE_CH, i);
drivers/bus/mhi/ep/main.c
1193
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
1198
mhi_chan = &mhi_cntrl->mhi_chan[i];
drivers/bus/mhi/ep/main.c
1200
if (!mhi_chan->mhi_dev)
drivers/bus/mhi/ep/main.c
1203
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1207
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1211
dev_dbg(&mhi_chan->mhi_dev->dev, "Suspending channel\n");
drivers/bus/mhi/ep/main.c
1213
mhi_chan->state = MHI_CH_STATE_SUSPENDED;
drivers/bus/mhi/ep/main.c
1217
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1223
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
1228
mhi_chan = &mhi_cntrl->mhi_chan[i];
drivers/bus/mhi/ep/main.c
1230
if (!mhi_chan->mhi_dev)
drivers/bus/mhi/ep/main.c
1233
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1237
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1241
dev_dbg(&mhi_chan->mhi_dev->dev, "Resuming channel\n");
drivers/bus/mhi/ep/main.c
1243
mhi_chan->state = MHI_CH_STATE_RUNNING;
drivers/bus/mhi/ep/main.c
1247
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1309
struct mhi_ep_chan *mhi_chan = &mhi_cntrl->mhi_chan[ch_id];
drivers/bus/mhi/ep/main.c
1315
if (strcmp(mhi_chan->name, mhi_chan[1].name)) {
drivers/bus/mhi/ep/main.c
1317
mhi_chan->name, mhi_chan[1].name);
drivers/bus/mhi/ep/main.c
1326
mhi_dev->ul_chan = mhi_chan;
drivers/bus/mhi/ep/main.c
1328
mhi_chan->mhi_dev = mhi_dev;
drivers/bus/mhi/ep/main.c
1331
mhi_chan++;
drivers/bus/mhi/ep/main.c
1332
mhi_dev->dl_chan = mhi_chan;
drivers/bus/mhi/ep/main.c
1334
mhi_chan->mhi_dev = mhi_dev;
drivers/bus/mhi/ep/main.c
1337
mhi_dev->name = mhi_chan->name;
drivers/bus/mhi/ep/main.c
1402
mhi_cntrl->mhi_chan = kzalloc_objs(*mhi_cntrl->mhi_chan,
drivers/bus/mhi/ep/main.c
1404
if (!mhi_cntrl->mhi_chan)
drivers/bus/mhi/ep/main.c
1408
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
1426
mhi_chan = &mhi_cntrl->mhi_chan[chan];
drivers/bus/mhi/ep/main.c
1427
mhi_chan->name = ch_cfg->name;
drivers/bus/mhi/ep/main.c
1428
mhi_chan->chan = chan;
drivers/bus/mhi/ep/main.c
1429
mhi_chan->dir = ch_cfg->dir;
drivers/bus/mhi/ep/main.c
1430
mutex_init(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1436
kfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/ep/main.c
1567
kfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/ep/main.c
1589
kfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/ep/main.c
1616
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
1625
mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
drivers/bus/mhi/ep/main.c
1627
if (!mhi_chan)
drivers/bus/mhi/ep/main.c
1630
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
1632
if (mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
1635
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/ep/main.c
1638
mhi_chan->state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/ep/main.c
1639
mhi_chan->xfer_cb = NULL;
drivers/bus/mhi/ep/main.c
1640
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
168
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
176
if ((ch_id >= mhi_cntrl->max_chan) || !mhi_cntrl->mhi_chan[ch_id].name) {
drivers/bus/mhi/ep/main.c
181
mhi_chan = &mhi_cntrl->mhi_chan[ch_id];
drivers/bus/mhi/ep/main.c
182
ch_ring = &mhi_cntrl->mhi_chan[ch_id].ring;
drivers/bus/mhi/ep/main.c
188
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
203
mhi_chan->rd_offset = ch_ring->rd_offset;
drivers/bus/mhi/ep/main.c
207
mhi_chan->state = MHI_CH_STATE_RUNNING;
drivers/bus/mhi/ep/main.c
220
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
231
if (!(ch_id % 2) && !mhi_chan->mhi_dev) {
drivers/bus/mhi/ep/main.c
251
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
256
if (mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
259
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/ep/main.c
263
mhi_chan->state = MHI_CH_STATE_STOP;
drivers/bus/mhi/ep/main.c
276
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
285
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
290
if (mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
293
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/ep/main.c
297
mhi_chan->state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/ep/main.c
310
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
321
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
328
struct mhi_ep_chan *mhi_chan = (dir == DMA_FROM_DEVICE) ? mhi_dev->dl_chan :
drivers/bus/mhi/ep/main.c
331
struct mhi_ep_ring *ring = &mhi_cntrl->mhi_chan[mhi_chan->chan].ring;
drivers/bus/mhi/ep/main.c
333
return !!(mhi_chan->rd_offset == ring->wr_offset);
drivers/bus/mhi/ep/main.c
341
struct mhi_ep_chan *mhi_chan = mhi_dev->ul_chan;
drivers/bus/mhi/ep/main.c
342
struct mhi_ep_ring *ring = &mhi_cntrl->mhi_chan[mhi_chan->chan].ring;
drivers/bus/mhi/ep/main.c
347
if (mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
349
result.dir = mhi_chan->dir;
drivers/bus/mhi/ep/main.c
352
mhi_chan->xfer_cb(mhi_dev, &result);
drivers/bus/mhi/ep/main.c
371
dev_err(&mhi_chan->mhi_dev->dev,
drivers/bus/mhi/ep/main.c
387
dev_err(&mhi_chan->mhi_dev->dev,
drivers/bus/mhi/ep/main.c
404
struct mhi_ep_chan *mhi_chan = &mhi_cntrl->mhi_chan[ring->ch_id];
drivers/bus/mhi/ep/main.c
415
if (mhi_chan->state != MHI_CH_STATE_RUNNING) {
drivers/bus/mhi/ep/main.c
420
el = &ring->ring_cache[mhi_chan->rd_offset];
drivers/bus/mhi/ep/main.c
423
if (mhi_chan->tre_bytes_left) {
drivers/bus/mhi/ep/main.c
424
dev_dbg(dev, "TRE bytes remaining: %u\n", mhi_chan->tre_bytes_left);
drivers/bus/mhi/ep/main.c
425
tr_len = min(len, mhi_chan->tre_bytes_left);
drivers/bus/mhi/ep/main.c
427
mhi_chan->tre_loc = MHI_TRE_DATA_GET_PTR(el);
drivers/bus/mhi/ep/main.c
428
mhi_chan->tre_size = MHI_TRE_DATA_GET_LEN(el);
drivers/bus/mhi/ep/main.c
429
mhi_chan->tre_bytes_left = mhi_chan->tre_size;
drivers/bus/mhi/ep/main.c
431
tr_len = min(len, mhi_chan->tre_size);
drivers/bus/mhi/ep/main.c
434
read_offset = mhi_chan->tre_size - mhi_chan->tre_bytes_left;
drivers/bus/mhi/ep/main.c
440
buf_info.host_addr = mhi_chan->tre_loc + read_offset;
drivers/bus/mhi/ep/main.c
445
buf_info.mhi_dev = mhi_chan->mhi_dev;
drivers/bus/mhi/ep/main.c
447
if (mhi_chan->tre_bytes_left - tr_len)
drivers/bus/mhi/ep/main.c
453
dev_err(&mhi_chan->mhi_dev->dev, "Error reading from channel\n");
drivers/bus/mhi/ep/main.c
457
mhi_chan->tre_bytes_left -= tr_len;
drivers/bus/mhi/ep/main.c
459
if (!mhi_chan->tre_bytes_left)
drivers/bus/mhi/ep/main.c
460
mhi_chan->rd_offset = (mhi_chan->rd_offset + 1) % ring->ring_size;
drivers/bus/mhi/ep/main.c
462
} while (!mhi_ep_queue_is_empty(mhi_chan->mhi_dev, DMA_TO_DEVICE));
drivers/bus/mhi/ep/main.c
476
struct mhi_ep_chan *mhi_chan;
drivers/bus/mhi/ep/main.c
479
mhi_chan = &mhi_cntrl->mhi_chan[ring->ch_id];
drivers/bus/mhi/ep/main.c
485
if (!mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
486
dev_err(&mhi_chan->mhi_dev->dev, "Client driver not available\n");
drivers/bus/mhi/ep/main.c
492
result.dir = mhi_chan->dir;
drivers/bus/mhi/ep/main.c
493
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/ep/main.c
498
dev_err(&mhi_chan->mhi_dev->dev, "Failed to read channel\n");
drivers/bus/mhi/ep/main.c
510
struct mhi_ep_chan *mhi_chan = mhi_dev->dl_chan;
drivers/bus/mhi/ep/main.c
511
struct mhi_ep_ring *ring = &mhi_cntrl->mhi_chan[mhi_chan->chan].ring;
drivers/bus/mhi/ep/main.c
517
if (mhi_chan->xfer_cb) {
drivers/bus/mhi/ep/main.c
519
result.dir = mhi_chan->dir;
drivers/bus/mhi/ep/main.c
522
mhi_chan->xfer_cb(mhi_dev, &result);
drivers/bus/mhi/ep/main.c
539
struct mhi_ep_chan *mhi_chan = mhi_dev->dl_chan;
drivers/bus/mhi/ep/main.c
540
struct device *dev = &mhi_chan->mhi_dev->dev;
drivers/bus/mhi/ep/main.c
550
ring = &mhi_cntrl->mhi_chan[mhi_chan->chan].ring;
drivers/bus/mhi/ep/main.c
552
mutex_lock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
556
if (mhi_chan->state != MHI_CH_STATE_RUNNING) {
drivers/bus/mhi/ep/main.c
568
el = &ring->ring_cache[mhi_chan->rd_offset];
drivers/bus/mhi/ep/main.c
605
mhi_chan->rd_offset = (mhi_chan->rd_offset + 1) % ring->ring_size;
drivers/bus/mhi/ep/main.c
608
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
613
mutex_unlock(&mhi_chan->lock);
drivers/bus/mhi/ep/main.c
821
chan = &mhi_cntrl->mhi_chan[ring->ch_id];
drivers/bus/mhi/ep/main.c
916
ring = &mhi_cntrl->mhi_chan[ch_id].ring;
drivers/bus/mhi/host/debugfs.c
101
mhi_chan->name, mhi_chan->chan);
drivers/bus/mhi/host/debugfs.c
105
if (!mhi_chan->mhi_dev)
drivers/bus/mhi/host/debugfs.c
110
mhi_chan->name, mhi_chan->chan, (le32_to_cpu(chan_ctxt->chcfg) &
drivers/bus/mhi/host/debugfs.c
125
&mhi_chan->db_cfg.db_val);
drivers/bus/mhi/host/debugfs.c
85
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/debugfs.c
94
mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/debugfs.c
96
for (i = 0; i < mhi_cntrl->max_chan; i++, chan_ctxt++, mhi_chan++) {
drivers/bus/mhi/host/debugfs.c
97
struct mhi_ring *ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/debugfs.c
99
if (mhi_chan->offload_ch) {
drivers/bus/mhi/host/init.c
1054
vfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/host/init.c
1063
struct mhi_chan *mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/init.c
1077
for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) {
drivers/bus/mhi/host/init.c
1078
if (!mhi_chan->mhi_dev)
drivers/bus/mhi/host/init.c
1081
put_device(&mhi_chan->mhi_dev->dev);
drivers/bus/mhi/host/init.c
1083
vfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/host/init.c
1263
struct mhi_chan *ul_chan = mhi_dev->ul_chan;
drivers/bus/mhi/host/init.c
1264
struct mhi_chan *dl_chan = mhi_dev->dl_chan;
drivers/bus/mhi/host/init.c
1337
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/init.c
1350
mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
drivers/bus/mhi/host/init.c
1352
if (!mhi_chan)
drivers/bus/mhi/host/init.c
1356
write_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/init.c
1357
mhi_chan->ccs = MHI_EV_CC_INVALID;
drivers/bus/mhi/host/init.c
1358
complete_all(&mhi_chan->completion);
drivers/bus/mhi/host/init.c
1359
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/init.c
1362
mutex_lock(&mhi_chan->mutex);
drivers/bus/mhi/host/init.c
1363
write_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/init.c
1364
ch_state[dir] = mhi_chan->ch_state;
drivers/bus/mhi/host/init.c
1365
mhi_chan->ch_state = MHI_CH_STATE_SUSPENDED;
drivers/bus/mhi/host/init.c
1366
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/init.c
1369
if (!mhi_chan->offload_ch)
drivers/bus/mhi/host/init.c
1370
mhi_reset_chan(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/init.c
1372
mutex_unlock(&mhi_chan->mutex);
drivers/bus/mhi/host/init.c
1379
mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
drivers/bus/mhi/host/init.c
1381
if (!mhi_chan)
drivers/bus/mhi/host/init.c
1384
mutex_lock(&mhi_chan->mutex);
drivers/bus/mhi/host/init.c
1388
!mhi_chan->offload_ch)
drivers/bus/mhi/host/init.c
1389
mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/init.c
1391
mhi_chan->ch_state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/host/init.c
1393
mutex_unlock(&mhi_chan->mutex);
drivers/bus/mhi/host/init.c
307
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/init.c
329
mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/init.c
331
for (i = 0; i < mhi_cntrl->max_chan; i++, chan_ctxt++, mhi_chan++) {
drivers/bus/mhi/host/init.c
333
if (mhi_chan->offload_ch)
drivers/bus/mhi/host/init.c
340
tmp |= FIELD_PREP(CHAN_CTX_BRSTMODE_MASK, mhi_chan->db_cfg.brstmode);
drivers/bus/mhi/host/init.c
342
tmp |= FIELD_PREP(CHAN_CTX_POLLCFG_MASK, mhi_chan->db_cfg.pollcfg);
drivers/bus/mhi/host/init.c
345
chan_ctxt->chtype = cpu_to_le32(mhi_chan->type);
drivers/bus/mhi/host/init.c
346
chan_ctxt->erindex = cpu_to_le32(mhi_chan->er_index);
drivers/bus/mhi/host/init.c
348
mhi_chan->ch_state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/host/init.c
349
mhi_chan->tre_ring.db_addr = (void __iomem *)&chan_ctxt->wp;
drivers/bus/mhi/host/init.c
473
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/init.c
558
mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/init.c
559
for (i = 0; i < mhi_cntrl->max_chan; i++, val += 8, mhi_chan++)
drivers/bus/mhi/host/init.c
560
mhi_chan->tre_ring.db_addr = base + val;
drivers/bus/mhi/host/init.c
610
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/init.c
617
buf_ring = &mhi_chan->buf_ring;
drivers/bus/mhi/host/init.c
618
tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/init.c
619
chan_ctxt = &mhi_cntrl->mhi_ctxt->chan_ctxt[mhi_chan->chan];
drivers/bus/mhi/host/init.c
645
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/init.c
653
buf_ring = &mhi_chan->buf_ring;
drivers/bus/mhi/host/init.c
654
tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/init.c
657
chan_ctxt = &mhi_cntrl->mhi_ctxt->chan_ctxt[mhi_chan->chan];
drivers/bus/mhi/host/init.c
684
mhi_chan->db_cfg.db_mode = 1;
drivers/bus/mhi/host/init.c
725
mhi_event->mhi_chan =
drivers/bus/mhi/host/init.c
726
&mhi_cntrl->mhi_chan[mhi_event->chan];
drivers/bus/mhi/host/init.c
789
mhi_cntrl->mhi_chan = vcalloc(mhi_cntrl->max_chan,
drivers/bus/mhi/host/init.c
790
sizeof(*mhi_cntrl->mhi_chan));
drivers/bus/mhi/host/init.c
791
if (!mhi_cntrl->mhi_chan)
drivers/bus/mhi/host/init.c
798
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/init.c
808
mhi_chan = &mhi_cntrl->mhi_chan[chan];
drivers/bus/mhi/host/init.c
809
mhi_chan->name = ch_cfg->name;
drivers/bus/mhi/host/init.c
810
mhi_chan->chan = chan;
drivers/bus/mhi/host/init.c
812
mhi_chan->tre_ring.elements = ch_cfg->num_elements;
drivers/bus/mhi/host/init.c
813
if (!mhi_chan->tre_ring.elements)
drivers/bus/mhi/host/init.c
823
mhi_chan->buf_ring.elements = ch_cfg->local_elements;
drivers/bus/mhi/host/init.c
824
if (!mhi_chan->buf_ring.elements)
drivers/bus/mhi/host/init.c
825
mhi_chan->buf_ring.elements = mhi_chan->tre_ring.elements;
drivers/bus/mhi/host/init.c
826
mhi_chan->er_index = ch_cfg->event_ring;
drivers/bus/mhi/host/init.c
827
mhi_chan->dir = ch_cfg->dir;
drivers/bus/mhi/host/init.c
834
mhi_chan->type = ch_cfg->type;
drivers/bus/mhi/host/init.c
835
if (!mhi_chan->type)
drivers/bus/mhi/host/init.c
836
mhi_chan->type = (enum mhi_ch_type)mhi_chan->dir;
drivers/bus/mhi/host/init.c
838
mhi_chan->ee_mask = ch_cfg->ee_mask;
drivers/bus/mhi/host/init.c
839
mhi_chan->db_cfg.pollcfg = ch_cfg->pollcfg;
drivers/bus/mhi/host/init.c
840
mhi_chan->lpm_notify = ch_cfg->lpm_notify;
drivers/bus/mhi/host/init.c
841
mhi_chan->offload_ch = ch_cfg->offload_channel;
drivers/bus/mhi/host/init.c
842
mhi_chan->db_cfg.reset_req = ch_cfg->doorbell_mode_switch;
drivers/bus/mhi/host/init.c
843
mhi_chan->wake_capable = ch_cfg->wake_capable;
drivers/bus/mhi/host/init.c
849
if ((mhi_chan->dir == DMA_BIDIRECTIONAL ||
drivers/bus/mhi/host/init.c
850
mhi_chan->dir == DMA_NONE) && !mhi_chan->offload_ch) {
drivers/bus/mhi/host/init.c
855
if (!mhi_chan->offload_ch) {
drivers/bus/mhi/host/init.c
856
mhi_chan->db_cfg.brstmode = ch_cfg->doorbell;
drivers/bus/mhi/host/init.c
857
if (MHI_INVALID_BRSTMODE(mhi_chan->db_cfg.brstmode)) {
drivers/bus/mhi/host/init.c
863
if (mhi_chan->db_cfg.brstmode == MHI_DB_BRST_ENABLE)
drivers/bus/mhi/host/init.c
864
mhi_chan->db_cfg.process_db = mhi_db_brstmode;
drivers/bus/mhi/host/init.c
866
mhi_chan->db_cfg.process_db = mhi_db_brstmode_disable;
drivers/bus/mhi/host/init.c
868
mhi_chan->configured = true;
drivers/bus/mhi/host/init.c
870
if (mhi_chan->lpm_notify)
drivers/bus/mhi/host/init.c
871
list_add_tail(&mhi_chan->node, &mhi_cntrl->lpm_chans);
drivers/bus/mhi/host/init.c
877
vfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/host/init.c
915
vfree(mhi_cntrl->mhi_chan);
drivers/bus/mhi/host/init.c
924
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/init.c
981
mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/init.c
982
for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) {
drivers/bus/mhi/host/init.c
983
mutex_init(&mhi_chan->mutex);
drivers/bus/mhi/host/init.c
984
init_completion(&mhi_chan->completion);
drivers/bus/mhi/host/init.c
985
rwlock_init(&mhi_chan->lock);
drivers/bus/mhi/host/init.c
988
mhi_event = &mhi_cntrl->mhi_event[mhi_chan->er_index];
drivers/bus/mhi/host/init.c
989
mhi_chan->intmod = mhi_event->intmod;
drivers/bus/mhi/host/internal.h
243
struct mhi_chan *mhi_chan; /* dedicated to channel */
drivers/bus/mhi/host/internal.h
343
int mhi_send_cmd(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,
drivers/bus/mhi/host/internal.h
383
struct mhi_chan *mhi_chan);
drivers/bus/mhi/host/internal.h
392
struct mhi_chan *mhi_chan);
drivers/bus/mhi/host/internal.h
394
struct mhi_chan *mhi_chan);
drivers/bus/mhi/host/internal.h
396
struct mhi_chan *mhi_chan);
drivers/bus/mhi/host/internal.h
412
int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,
drivers/bus/mhi/host/main.c
1011
mhi_cntrl->mhi_chan[chan].configured) {
drivers/bus/mhi/host/main.c
1012
mhi_chan = &mhi_cntrl->mhi_chan[chan];
drivers/bus/mhi/host/main.c
1015
parse_xfer_event(mhi_cntrl, local_rp, mhi_chan);
drivers/bus/mhi/host/main.c
1018
parse_rsc_event(mhi_cntrl, local_rp, mhi_chan);
drivers/bus/mhi/host/main.c
1118
struct mhi_chan *mhi_chan = (dir == DMA_TO_DEVICE) ? mhi_dev->ul_chan :
drivers/bus/mhi/host/main.c
1120
struct mhi_ring *tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
1131
ret = mhi_gen_tre(mhi_cntrl, mhi_chan, buf_info, mflags);
drivers/bus/mhi/host/main.c
1146
if (mhi_chan->dir == DMA_TO_DEVICE)
drivers/bus/mhi/host/main.c
1150
mhi_ring_chan_db(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1173
int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,
drivers/bus/mhi/host/main.c
1183
write_lock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1185
if (mhi_chan->ch_state != MHI_CH_STATE_ENABLED) {
drivers/bus/mhi/host/main.c
1190
buf_ring = &mhi_chan->buf_ring;
drivers/bus/mhi/host/main.c
1191
tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
1202
buf_info->dir = mhi_chan->dir;
drivers/bus/mhi/host/main.c
1214
bei = !!(mhi_chan->intmod);
drivers/bus/mhi/host/main.c
1221
trace_mhi_gen_tre(mhi_cntrl, mhi_chan, mhi_tre);
drivers/bus/mhi/host/main.c
1227
write_unlock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1248
struct mhi_chan *mhi_chan = (dir == DMA_TO_DEVICE) ?
drivers/bus/mhi/host/main.c
1250
struct mhi_ring *tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
1257
struct mhi_chan *mhi_chan,
drivers/bus/mhi/host/main.c
1266
if (mhi_chan)
drivers/bus/mhi/host/main.c
1267
chan = mhi_chan->chan;
drivers/bus/mhi/host/main.c
1310
struct mhi_chan *mhi_chan,
drivers/bus/mhi/host/main.c
1313
struct device *dev = &mhi_chan->mhi_dev->dev;
drivers/bus/mhi/host/main.c
1317
trace_mhi_channel_command_start(mhi_cntrl, mhi_chan, to_state, TPS("Updating"));
drivers/bus/mhi/host/main.c
1320
write_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1321
if (mhi_chan->ch_state != MHI_CH_STATE_STOP &&
drivers/bus/mhi/host/main.c
1322
mhi_chan->ch_state != MHI_CH_STATE_ENABLED &&
drivers/bus/mhi/host/main.c
1323
mhi_chan->ch_state != MHI_CH_STATE_SUSPENDED) {
drivers/bus/mhi/host/main.c
1324
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1327
mhi_chan->ch_state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/host/main.c
1328
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1333
if (mhi_chan->ch_state != MHI_CH_STATE_ENABLED)
drivers/bus/mhi/host/main.c
1339
if (mhi_chan->ch_state != MHI_CH_STATE_STOP &&
drivers/bus/mhi/host/main.c
1340
mhi_chan->ch_state != MHI_CH_STATE_DISABLED)
drivers/bus/mhi/host/main.c
1347
mhi_chan->chan, TO_CH_STATE_TYPE_STR(to_state));
drivers/bus/mhi/host/main.c
135
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/main.c
1357
reinit_completion(&mhi_chan->completion);
drivers/bus/mhi/host/main.c
1358
ret = mhi_send_cmd(mhi_cntrl, mhi_chan, cmd);
drivers/bus/mhi/host/main.c
1361
mhi_chan->chan, TO_CH_STATE_TYPE_STR(to_state));
drivers/bus/mhi/host/main.c
1365
ret = wait_for_completion_timeout(&mhi_chan->completion,
drivers/bus/mhi/host/main.c
1367
if (!ret || mhi_chan->ccs != MHI_EV_CC_SUCCESS) {
drivers/bus/mhi/host/main.c
137
struct mhi_ring *ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
1370
mhi_chan->chan, TO_CH_STATE_TYPE_STR(to_state));
drivers/bus/mhi/host/main.c
1378
write_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1379
mhi_chan->ch_state = (to_state == MHI_CH_STATE_TYPE_START) ?
drivers/bus/mhi/host/main.c
1381
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1384
trace_mhi_channel_command_end(mhi_cntrl, mhi_chan, to_state, TPS("Updated"));
drivers/bus/mhi/host/main.c
1393
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/main.c
1396
struct device *dev = &mhi_chan->mhi_dev->dev;
drivers/bus/mhi/host/main.c
1398
mutex_lock(&mhi_chan->mutex);
drivers/bus/mhi/host/main.c
1400
if (!(BIT(mhi_cntrl->ee) & mhi_chan->ee_mask)) {
drivers/bus/mhi/host/main.c
1402
TO_MHI_EXEC_STR(mhi_cntrl->ee), mhi_chan->ee_mask);
drivers/bus/mhi/host/main.c
1407
ret = mhi_update_channel_state(mhi_cntrl, mhi_chan,
drivers/bus/mhi/host/main.c
1411
mhi_chan->chan);
drivers/bus/mhi/host/main.c
1414
write_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1415
mhi_chan->ch_state = MHI_CH_STATE_DISABLED;
drivers/bus/mhi/host/main.c
1416
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
1418
if (!mhi_chan->offload_ch) {
drivers/bus/mhi/host/main.c
1419
mhi_reset_chan(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1420
mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1422
dev_dbg(dev, "%d: successfully reset\n", mhi_chan->chan);
drivers/bus/mhi/host/main.c
1424
mutex_unlock(&mhi_chan->mutex);
drivers/bus/mhi/host/main.c
1428
struct mhi_chan *mhi_chan, unsigned int flags)
drivers/bus/mhi/host/main.c
1431
struct device *dev = &mhi_chan->mhi_dev->dev;
drivers/bus/mhi/host/main.c
1433
if (!(BIT(mhi_cntrl->ee) & mhi_chan->ee_mask)) {
drivers/bus/mhi/host/main.c
1435
TO_MHI_EXEC_STR(mhi_cntrl->ee), mhi_chan->ee_mask);
drivers/bus/mhi/host/main.c
1439
mutex_lock(&mhi_chan->mutex);
drivers/bus/mhi/host/main.c
1442
if (!mhi_chan->offload_ch) {
drivers/bus/mhi/host/main.c
1443
ret = mhi_init_chan_ctxt(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1448
ret = mhi_update_channel_state(mhi_cntrl, mhi_chan,
drivers/bus/mhi/host/main.c
1453
mutex_unlock(&mhi_chan->mutex);
drivers/bus/mhi/host/main.c
1458
if (!mhi_chan->offload_ch)
drivers/bus/mhi/host/main.c
1459
mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1462
mutex_unlock(&mhi_chan->mutex);
drivers/bus/mhi/host/main.c
149
mhi_chan->db_cfg.process_db(mhi_cntrl, &mhi_chan->db_cfg,
drivers/bus/mhi/host/main.c
1511
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/main.c
1517
buf_ring = &mhi_chan->buf_ring;
drivers/bus/mhi/host/main.c
1518
tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
1524
if (mhi_chan->dir == DMA_TO_DEVICE) {
drivers/bus/mhi/host/main.c
1537
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/host/main.c
1541
void mhi_reset_chan(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/main.c
1545
int chan = mhi_chan->chan;
drivers/bus/mhi/host/main.c
1548
if (mhi_chan->offload_ch)
drivers/bus/mhi/host/main.c
1552
mhi_event = &mhi_cntrl->mhi_event[mhi_chan->er_index];
drivers/bus/mhi/host/main.c
1553
er_ctxt = &mhi_cntrl->mhi_ctxt->er_ctxt[mhi_chan->er_index];
drivers/bus/mhi/host/main.c
1557
mhi_reset_data_chan(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1566
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/main.c
1569
mhi_chan = dir ? mhi_dev->dl_chan : mhi_dev->ul_chan;
drivers/bus/mhi/host/main.c
1570
if (!mhi_chan)
drivers/bus/mhi/host/main.c
1573
ret = mhi_prepare_channel(mhi_cntrl, mhi_chan, flags);
drivers/bus/mhi/host/main.c
1582
mhi_chan = dir ? mhi_dev->dl_chan : mhi_dev->ul_chan;
drivers/bus/mhi/host/main.c
1583
if (!mhi_chan)
drivers/bus/mhi/host/main.c
1586
mhi_unprepare_channel(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
1601
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/main.c
1605
mhi_chan = dir ? mhi_dev->ul_chan : mhi_dev->dl_chan;
drivers/bus/mhi/host/main.c
1606
if (!mhi_chan)
drivers/bus/mhi/host/main.c
1609
mhi_unprepare_channel(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
279
struct mhi_chan *ul_chan, *dl_chan;
drivers/bus/mhi/host/main.c
340
struct mhi_chan *mhi_chan = (dir == DMA_TO_DEVICE) ?
drivers/bus/mhi/host/main.c
342
struct mhi_ring *tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
365
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/main.c
370
mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/main.c
371
for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) {
drivers/bus/mhi/host/main.c
372
if (!mhi_chan->configured || mhi_chan->mhi_dev ||
drivers/bus/mhi/host/main.c
373
!(mhi_chan->ee_mask & BIT(mhi_cntrl->ee)))
drivers/bus/mhi/host/main.c
380
switch (mhi_chan->dir) {
drivers/bus/mhi/host/main.c
382
mhi_dev->ul_chan = mhi_chan;
drivers/bus/mhi/host/main.c
383
mhi_dev->ul_chan_id = mhi_chan->chan;
drivers/bus/mhi/host/main.c
387
mhi_dev->dl_chan = mhi_chan;
drivers/bus/mhi/host/main.c
388
mhi_dev->dl_chan_id = mhi_chan->chan;
drivers/bus/mhi/host/main.c
397
mhi_chan->mhi_dev = mhi_dev;
drivers/bus/mhi/host/main.c
400
if ((i + 1) < mhi_cntrl->max_chan && mhi_chan[1].configured) {
drivers/bus/mhi/host/main.c
401
if (!strcmp(mhi_chan[1].name, mhi_chan->name)) {
drivers/bus/mhi/host/main.c
403
mhi_chan++;
drivers/bus/mhi/host/main.c
404
if (mhi_chan->dir == DMA_TO_DEVICE) {
drivers/bus/mhi/host/main.c
405
mhi_dev->ul_chan = mhi_chan;
drivers/bus/mhi/host/main.c
406
mhi_dev->ul_chan_id = mhi_chan->chan;
drivers/bus/mhi/host/main.c
408
mhi_dev->dl_chan = mhi_chan;
drivers/bus/mhi/host/main.c
409
mhi_dev->dl_chan_id = mhi_chan->chan;
drivers/bus/mhi/host/main.c
412
mhi_chan->mhi_dev = mhi_dev;
drivers/bus/mhi/host/main.c
417
mhi_dev->name = mhi_chan->name;
drivers/bus/mhi/host/main.c
469
struct mhi_chan *mhi_chan = mhi_event->mhi_chan;
drivers/bus/mhi/host/main.c
470
struct mhi_device *mhi_dev = mhi_chan->mhi_dev;
drivers/bus/mhi/host/main.c
570
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/main.c
579
buf_ring = &mhi_chan->buf_ring;
drivers/bus/mhi/host/main.c
580
tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
592
write_lock_irqsave(&mhi_chan->lock, flags);
drivers/bus/mhi/host/main.c
594
read_lock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
596
if (mhi_chan->ch_state != MHI_CH_STATE_ENABLED)
drivers/bus/mhi/host/main.c
622
result.dir = mhi_chan->dir;
drivers/bus/mhi/host/main.c
656
read_unlock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
659
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/host/main.c
661
if (mhi_chan->dir == DMA_TO_DEVICE) {
drivers/bus/mhi/host/main.c
667
read_lock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
676
mhi_chan->db_cfg.db_mode = 1;
drivers/bus/mhi/host/main.c
680
mhi_ring_chan_db(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/main.c
693
write_unlock_irqrestore(&mhi_chan->lock, flags);
drivers/bus/mhi/host/main.c
695
read_unlock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
702
struct mhi_chan *mhi_chan)
drivers/bus/mhi/host/main.c
711
buf_ring = &mhi_chan->buf_ring;
drivers/bus/mhi/host/main.c
712
tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/main.c
729
result.dir = mhi_chan->dir;
drivers/bus/mhi/host/main.c
731
read_lock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
733
if (mhi_chan->ch_state != MHI_CH_STATE_ENABLED)
drivers/bus/mhi/host/main.c
739
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
drivers/bus/mhi/host/main.c
759
read_unlock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
771
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/main.c
785
mhi_cntrl->mhi_chan[chan].configured) {
drivers/bus/mhi/host/main.c
786
mhi_chan = &mhi_cntrl->mhi_chan[chan];
drivers/bus/mhi/host/main.c
787
write_lock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
788
mhi_chan->ccs = MHI_TRE_GET_EV_CODE(tre);
drivers/bus/mhi/host/main.c
789
complete(&mhi_chan->completion);
drivers/bus/mhi/host/main.c
790
write_unlock_bh(&mhi_chan->lock);
drivers/bus/mhi/host/main.c
807
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/main.c
937
mhi_chan = &mhi_cntrl->mhi_chan[chan];
drivers/bus/mhi/host/main.c
938
if (!mhi_chan->configured)
drivers/bus/mhi/host/main.c
940
parse_xfer_event(mhi_cntrl, local_rp, mhi_chan);
drivers/bus/mhi/host/main.c
982
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/pm.c
265
struct mhi_chan *mhi_chan;
drivers/bus/mhi/host/pm.c
306
mhi_chan = mhi_cntrl->mhi_chan;
drivers/bus/mhi/host/pm.c
307
for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) {
drivers/bus/mhi/host/pm.c
308
struct mhi_ring *tre_ring = &mhi_chan->tre_ring;
drivers/bus/mhi/host/pm.c
310
if (mhi_chan->db_cfg.reset_req) {
drivers/bus/mhi/host/pm.c
311
write_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/pm.c
312
mhi_chan->db_cfg.db_mode = true;
drivers/bus/mhi/host/pm.c
313
write_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/pm.c
316
read_lock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/pm.c
320
mhi_chan->ch_state == MHI_CH_STATE_ENABLED)
drivers/bus/mhi/host/pm.c
321
mhi_ring_chan_db(mhi_cntrl, mhi_chan);
drivers/bus/mhi/host/pm.c
322
read_unlock_irq(&mhi_chan->lock);
drivers/bus/mhi/host/pm.c
869
struct mhi_chan *itr, *tmp;
drivers/bus/mhi/host/pm.c
957
struct mhi_chan *itr, *tmp;
drivers/bus/mhi/host/trace.h
108
__entry->ch_num = mhi_chan->chan;
drivers/bus/mhi/host/trace.h
217
TP_PROTO(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, int state,
drivers/bus/mhi/host/trace.h
220
TP_ARGS(mhi_cntrl, mhi_chan, state, reason),
drivers/bus/mhi/host/trace.h
231
__entry->ch_num = mhi_chan->chan;
drivers/bus/mhi/host/trace.h
243
TP_PROTO(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, int state,
drivers/bus/mhi/host/trace.h
246
TP_ARGS(mhi_cntrl, mhi_chan, state, reason)
drivers/bus/mhi/host/trace.h
251
TP_PROTO(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan, int state,
drivers/bus/mhi/host/trace.h
254
TP_ARGS(mhi_cntrl, mhi_chan, state, reason)
drivers/bus/mhi/host/trace.h
92
TP_PROTO(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,
drivers/bus/mhi/host/trace.h
95
TP_ARGS(mhi_cntrl, mhi_chan, mhi_tre),
include/linux/mhi.h
20
struct mhi_chan;
include/linux/mhi.h
390
struct mhi_chan *mhi_chan;
include/linux/mhi.h
468
struct mhi_chan *ul_chan;
include/linux/mhi.h
469
struct mhi_chan *dl_chan;
include/linux/mhi_ep.h
126
struct mhi_ep_chan *mhi_chan;