• Home
  • Raw
  • Download

Lines Matching refs:mhi_cntrl

98 	struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl;  in serial_number_show()  local
101 mhi_cntrl->serial_number); in serial_number_show()
110 struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl; in oem_pk_hash_show() local
113 for (i = 0; i < ARRAY_SIZE(mhi_cntrl->oem_pk_hash); i++) in oem_pk_hash_show()
116 mhi_cntrl->oem_pk_hash[i]); in oem_pk_hash_show()
130 static int mhi_alloc_aligned_ring(struct mhi_controller *mhi_cntrl, in mhi_alloc_aligned_ring() argument
135 ring->pre_aligned = dma_alloc_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size, in mhi_alloc_aligned_ring()
146 void mhi_deinit_free_irq(struct mhi_controller *mhi_cntrl) in mhi_deinit_free_irq() argument
149 struct mhi_event *mhi_event = mhi_cntrl->mhi_event; in mhi_deinit_free_irq()
151 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, mhi_event++) { in mhi_deinit_free_irq()
155 free_irq(mhi_cntrl->irq[mhi_event->irq], mhi_event); in mhi_deinit_free_irq()
158 free_irq(mhi_cntrl->irq[0], mhi_cntrl); in mhi_deinit_free_irq()
161 int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) in mhi_init_irq_setup() argument
163 struct mhi_event *mhi_event = mhi_cntrl->mhi_event; in mhi_init_irq_setup()
164 struct device *dev = &mhi_cntrl->mhi_dev->dev; in mhi_init_irq_setup()
169 if (mhi_cntrl->irq_flags) in mhi_init_irq_setup()
170 irq_flags = mhi_cntrl->irq_flags; in mhi_init_irq_setup()
173 ret = request_threaded_irq(mhi_cntrl->irq[0], mhi_intvec_handler, in mhi_init_irq_setup()
176 "bhi", mhi_cntrl); in mhi_init_irq_setup()
180 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, mhi_event++) { in mhi_init_irq_setup()
184 if (mhi_event->irq >= mhi_cntrl->nr_irqs) { in mhi_init_irq_setup()
191 ret = request_irq(mhi_cntrl->irq[mhi_event->irq], in mhi_init_irq_setup()
197 mhi_cntrl->irq[mhi_event->irq], i); in mhi_init_irq_setup()
209 free_irq(mhi_cntrl->irq[mhi_event->irq], mhi_event); in mhi_init_irq_setup()
211 free_irq(mhi_cntrl->irq[0], mhi_cntrl); in mhi_init_irq_setup()
216 void mhi_deinit_dev_ctxt(struct mhi_controller *mhi_cntrl) in mhi_deinit_dev_ctxt() argument
219 struct mhi_ctxt *mhi_ctxt = mhi_cntrl->mhi_ctxt; in mhi_deinit_dev_ctxt()
224 mhi_cmd = mhi_cntrl->mhi_cmd; in mhi_deinit_dev_ctxt()
227 dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size, in mhi_deinit_dev_ctxt()
233 dma_free_coherent(mhi_cntrl->cntrl_dev, in mhi_deinit_dev_ctxt()
237 mhi_event = mhi_cntrl->mhi_event; in mhi_deinit_dev_ctxt()
238 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, mhi_event++) { in mhi_deinit_dev_ctxt()
243 dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size, in mhi_deinit_dev_ctxt()
249 dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) * in mhi_deinit_dev_ctxt()
250 mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt, in mhi_deinit_dev_ctxt()
253 dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) * in mhi_deinit_dev_ctxt()
254 mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt, in mhi_deinit_dev_ctxt()
258 mhi_cntrl->mhi_ctxt = NULL; in mhi_deinit_dev_ctxt()
261 int mhi_init_dev_ctxt(struct mhi_controller *mhi_cntrl) in mhi_init_dev_ctxt() argument
273 atomic_set(&mhi_cntrl->dev_wake, 0); in mhi_init_dev_ctxt()
274 atomic_set(&mhi_cntrl->pending_pkts, 0); in mhi_init_dev_ctxt()
281 mhi_ctxt->chan_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev, in mhi_init_dev_ctxt()
283 mhi_cntrl->max_chan, in mhi_init_dev_ctxt()
289 mhi_chan = mhi_cntrl->mhi_chan; in mhi_init_dev_ctxt()
291 for (i = 0; i < mhi_cntrl->max_chan; i++, chan_ctxt++, mhi_chan++) { in mhi_init_dev_ctxt()
313 mhi_ctxt->er_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev, in mhi_init_dev_ctxt()
315 mhi_cntrl->total_ev_rings, in mhi_init_dev_ctxt()
322 mhi_event = mhi_cntrl->mhi_event; in mhi_init_dev_ctxt()
323 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, er_ctxt++, in mhi_init_dev_ctxt()
343 ret = mhi_alloc_aligned_ring(mhi_cntrl, ring, ring->len); in mhi_init_dev_ctxt()
360 mhi_ctxt->cmd_ctxt = dma_alloc_coherent(mhi_cntrl->cntrl_dev, in mhi_init_dev_ctxt()
368 mhi_cmd = mhi_cntrl->mhi_cmd; in mhi_init_dev_ctxt()
376 ret = mhi_alloc_aligned_ring(mhi_cntrl, ring, ring->len); in mhi_init_dev_ctxt()
387 mhi_cntrl->mhi_ctxt = mhi_ctxt; in mhi_init_dev_ctxt()
395 dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size, in mhi_init_dev_ctxt()
398 dma_free_coherent(mhi_cntrl->cntrl_dev, in mhi_init_dev_ctxt()
401 i = mhi_cntrl->total_ev_rings; in mhi_init_dev_ctxt()
402 mhi_event = mhi_cntrl->mhi_event + i; in mhi_init_dev_ctxt()
411 dma_free_coherent(mhi_cntrl->cntrl_dev, ring->alloc_size, in mhi_init_dev_ctxt()
414 dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->er_ctxt) * in mhi_init_dev_ctxt()
415 mhi_cntrl->total_ev_rings, mhi_ctxt->er_ctxt, in mhi_init_dev_ctxt()
419 dma_free_coherent(mhi_cntrl->cntrl_dev, sizeof(*mhi_ctxt->chan_ctxt) * in mhi_init_dev_ctxt()
420 mhi_cntrl->max_chan, mhi_ctxt->chan_ctxt, in mhi_init_dev_ctxt()
429 int mhi_init_mmio(struct mhi_controller *mhi_cntrl) in mhi_init_mmio() argument
435 void __iomem *base = mhi_cntrl->regs; in mhi_init_mmio()
436 struct device *dev = &mhi_cntrl->mhi_dev->dev; in mhi_init_mmio()
445 upper_32_bits(mhi_cntrl->mhi_ctxt->chan_ctxt_addr), in mhi_init_mmio()
449 lower_32_bits(mhi_cntrl->mhi_ctxt->chan_ctxt_addr), in mhi_init_mmio()
453 upper_32_bits(mhi_cntrl->mhi_ctxt->er_ctxt_addr), in mhi_init_mmio()
457 lower_32_bits(mhi_cntrl->mhi_ctxt->er_ctxt_addr), in mhi_init_mmio()
461 upper_32_bits(mhi_cntrl->mhi_ctxt->cmd_ctxt_addr), in mhi_init_mmio()
465 lower_32_bits(mhi_cntrl->mhi_ctxt->cmd_ctxt_addr), in mhi_init_mmio()
469 mhi_cntrl->total_ev_rings, in mhi_init_mmio()
473 mhi_cntrl->hw_ev_rings, in mhi_init_mmio()
477 upper_32_bits(mhi_cntrl->iova_start), in mhi_init_mmio()
481 lower_32_bits(mhi_cntrl->iova_start), in mhi_init_mmio()
485 upper_32_bits(mhi_cntrl->iova_start), in mhi_init_mmio()
489 lower_32_bits(mhi_cntrl->iova_start), in mhi_init_mmio()
493 upper_32_bits(mhi_cntrl->iova_stop), in mhi_init_mmio()
497 lower_32_bits(mhi_cntrl->iova_stop), in mhi_init_mmio()
501 upper_32_bits(mhi_cntrl->iova_stop), in mhi_init_mmio()
505 lower_32_bits(mhi_cntrl->iova_stop), in mhi_init_mmio()
513 ret = mhi_read_reg_field(mhi_cntrl, base, CHDBOFF, CHDBOFF_CHDBOFF_MASK, in mhi_init_mmio()
520 if (val >= mhi_cntrl->reg_len - (8 * MHI_DEV_WAKE_DB)) { in mhi_init_mmio()
522 val, mhi_cntrl->reg_len - (8 * MHI_DEV_WAKE_DB)); in mhi_init_mmio()
527 mhi_cntrl->wake_db = base + val + (8 * MHI_DEV_WAKE_DB); in mhi_init_mmio()
528 mhi_cntrl->wake_set = false; in mhi_init_mmio()
531 mhi_chan = mhi_cntrl->mhi_chan; in mhi_init_mmio()
532 for (i = 0; i < mhi_cntrl->max_chan; i++, val += 8, mhi_chan++) in mhi_init_mmio()
536 ret = mhi_read_reg_field(mhi_cntrl, base, ERDBOFF, ERDBOFF_ERDBOFF_MASK, in mhi_init_mmio()
543 if (val >= mhi_cntrl->reg_len - (8 * mhi_cntrl->total_ev_rings)) { in mhi_init_mmio()
545 val, mhi_cntrl->reg_len - (8 * mhi_cntrl->total_ev_rings)); in mhi_init_mmio()
550 mhi_event = mhi_cntrl->mhi_event; in mhi_init_mmio()
551 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, val += 8, mhi_event++) { in mhi_init_mmio()
559 mhi_cntrl->mhi_cmd[PRIMARY_CMD_RING].ring.db_addr = base + CRDB_LOWER; in mhi_init_mmio()
563 mhi_write_reg_field(mhi_cntrl, base, reg_info[i].offset, in mhi_init_mmio()
570 void mhi_deinit_chan_ctxt(struct mhi_controller *mhi_cntrl, in mhi_deinit_chan_ctxt() argument
580 chan_ctxt = &mhi_cntrl->mhi_ctxt->chan_ctxt[mhi_chan->chan]; in mhi_deinit_chan_ctxt()
585 dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size, in mhi_deinit_chan_ctxt()
605 int mhi_init_chan_ctxt(struct mhi_controller *mhi_cntrl, in mhi_init_chan_ctxt() argument
618 chan_ctxt = &mhi_cntrl->mhi_ctxt->chan_ctxt[mhi_chan->chan]; in mhi_init_chan_ctxt()
619 ret = mhi_alloc_aligned_ring(mhi_cntrl, tre_ring, tre_ring->len); in mhi_init_chan_ctxt()
628 dma_free_coherent(mhi_cntrl->cntrl_dev, tre_ring->alloc_size, in mhi_init_chan_ctxt()
653 static int parse_ev_cfg(struct mhi_controller *mhi_cntrl, in parse_ev_cfg() argument
658 struct device *dev = mhi_cntrl->cntrl_dev; in parse_ev_cfg()
662 mhi_cntrl->total_ev_rings = num; in parse_ev_cfg()
663 mhi_cntrl->mhi_event = kcalloc(num, sizeof(*mhi_cntrl->mhi_event), in parse_ev_cfg()
665 if (!mhi_cntrl->mhi_event) in parse_ev_cfg()
669 mhi_event = mhi_cntrl->mhi_event; in parse_ev_cfg()
681 if (mhi_event->chan >= mhi_cntrl->max_chan) { in parse_ev_cfg()
688 &mhi_cntrl->mhi_chan[mhi_event->chan]; in parse_ev_cfg()
719 mhi_cntrl->hw_ev_rings++; in parse_ev_cfg()
721 mhi_cntrl->sw_ev_rings++; in parse_ev_cfg()
732 kfree(mhi_cntrl->mhi_event); in parse_ev_cfg()
736 static int parse_ch_cfg(struct mhi_controller *mhi_cntrl, in parse_ch_cfg() argument
740 struct device *dev = mhi_cntrl->cntrl_dev; in parse_ch_cfg()
744 mhi_cntrl->max_chan = config->max_channels; in parse_ch_cfg()
751 mhi_cntrl->mhi_chan = vzalloc(mhi_cntrl->max_chan * in parse_ch_cfg()
752 sizeof(*mhi_cntrl->mhi_chan)); in parse_ch_cfg()
753 if (!mhi_cntrl->mhi_chan) in parse_ch_cfg()
756 INIT_LIST_HEAD(&mhi_cntrl->lpm_chans); in parse_ch_cfg()
765 if (chan >= mhi_cntrl->max_chan) { in parse_ch_cfg()
770 mhi_chan = &mhi_cntrl->mhi_chan[chan]; in parse_ch_cfg()
843 list_add_tail(&mhi_chan->node, &mhi_cntrl->lpm_chans); in parse_ch_cfg()
849 vfree(mhi_cntrl->mhi_chan); in parse_ch_cfg()
854 static int parse_config(struct mhi_controller *mhi_cntrl, in parse_config() argument
860 ret = parse_ch_cfg(mhi_cntrl, config); in parse_config()
865 ret = parse_ev_cfg(mhi_cntrl, config); in parse_config()
869 mhi_cntrl->timeout_ms = config->timeout_ms; in parse_config()
870 if (!mhi_cntrl->timeout_ms) in parse_config()
871 mhi_cntrl->timeout_ms = MHI_TIMEOUT_MS; in parse_config()
873 mhi_cntrl->bounce_buf = config->use_bounce_buf; in parse_config()
874 mhi_cntrl->buffer_len = config->buf_len; in parse_config()
875 if (!mhi_cntrl->buffer_len) in parse_config()
876 mhi_cntrl->buffer_len = MHI_MAX_MTU; in parse_config()
879 mhi_cntrl->db_access = MHI_PM_M0 | MHI_PM_M2; in parse_config()
881 mhi_cntrl->db_access &= ~MHI_PM_M2; in parse_config()
886 vfree(mhi_cntrl->mhi_chan); in parse_config()
891 int mhi_register_controller(struct mhi_controller *mhi_cntrl, in mhi_register_controller() argument
901 if (!mhi_cntrl || !mhi_cntrl->cntrl_dev || !mhi_cntrl->regs || in mhi_register_controller()
902 !mhi_cntrl->runtime_get || !mhi_cntrl->runtime_put || in mhi_register_controller()
903 !mhi_cntrl->status_cb || !mhi_cntrl->read_reg || in mhi_register_controller()
904 !mhi_cntrl->write_reg || !mhi_cntrl->nr_irqs || in mhi_register_controller()
905 !mhi_cntrl->irq || !mhi_cntrl->reg_len) in mhi_register_controller()
908 ret = parse_config(mhi_cntrl, config); in mhi_register_controller()
912 mhi_cntrl->mhi_cmd = kcalloc(NR_OF_CMD_RINGS, in mhi_register_controller()
913 sizeof(*mhi_cntrl->mhi_cmd), GFP_KERNEL); in mhi_register_controller()
914 if (!mhi_cntrl->mhi_cmd) { in mhi_register_controller()
919 INIT_LIST_HEAD(&mhi_cntrl->transition_list); in mhi_register_controller()
920 mutex_init(&mhi_cntrl->pm_mutex); in mhi_register_controller()
921 rwlock_init(&mhi_cntrl->pm_lock); in mhi_register_controller()
922 spin_lock_init(&mhi_cntrl->transition_lock); in mhi_register_controller()
923 spin_lock_init(&mhi_cntrl->wlock); in mhi_register_controller()
924 INIT_WORK(&mhi_cntrl->st_worker, mhi_pm_st_worker); in mhi_register_controller()
925 init_waitqueue_head(&mhi_cntrl->state_event); in mhi_register_controller()
927 mhi_cntrl->hiprio_wq = alloc_ordered_workqueue("mhi_hiprio_wq", WQ_HIGHPRI); in mhi_register_controller()
928 if (!mhi_cntrl->hiprio_wq) { in mhi_register_controller()
929 dev_err(mhi_cntrl->cntrl_dev, "Failed to allocate workqueue\n"); in mhi_register_controller()
934 mhi_cmd = mhi_cntrl->mhi_cmd; in mhi_register_controller()
938 mhi_event = mhi_cntrl->mhi_event; in mhi_register_controller()
939 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, mhi_event++) { in mhi_register_controller()
944 mhi_event->mhi_cntrl = mhi_cntrl; in mhi_register_controller()
954 mhi_chan = mhi_cntrl->mhi_chan; in mhi_register_controller()
955 for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) { in mhi_register_controller()
961 mhi_event = &mhi_cntrl->mhi_event[mhi_chan->er_index]; in mhi_register_controller()
965 if (mhi_cntrl->bounce_buf) { in mhi_register_controller()
966 mhi_cntrl->map_single = mhi_map_single_use_bb; in mhi_register_controller()
967 mhi_cntrl->unmap_single = mhi_unmap_single_use_bb; in mhi_register_controller()
969 mhi_cntrl->map_single = mhi_map_single_no_bb; in mhi_register_controller()
970 mhi_cntrl->unmap_single = mhi_unmap_single_no_bb; in mhi_register_controller()
974 ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, in mhi_register_controller()
979 mhi_cntrl->family_number = (soc_info & SOC_HW_VERSION_FAM_NUM_BMSK) >> in mhi_register_controller()
981 mhi_cntrl->device_number = (soc_info & SOC_HW_VERSION_DEV_NUM_BMSK) >> in mhi_register_controller()
983 mhi_cntrl->major_version = (soc_info & SOC_HW_VERSION_MAJOR_VER_BMSK) >> in mhi_register_controller()
985 mhi_cntrl->minor_version = (soc_info & SOC_HW_VERSION_MINOR_VER_BMSK) >> in mhi_register_controller()
988 mhi_cntrl->index = ida_alloc(&mhi_controller_ida, GFP_KERNEL); in mhi_register_controller()
989 if (mhi_cntrl->index < 0) { in mhi_register_controller()
990 ret = mhi_cntrl->index; in mhi_register_controller()
995 mhi_dev = mhi_alloc_device(mhi_cntrl); in mhi_register_controller()
997 dev_err(mhi_cntrl->cntrl_dev, "Failed to allocate MHI device\n"); in mhi_register_controller()
1003 mhi_dev->mhi_cntrl = mhi_cntrl; in mhi_register_controller()
1004 dev_set_name(&mhi_dev->dev, "mhi%d", mhi_cntrl->index); in mhi_register_controller()
1014 mhi_cntrl->mhi_dev = mhi_dev; in mhi_register_controller()
1016 mhi_create_debugfs(mhi_cntrl); in mhi_register_controller()
1023 ida_free(&mhi_controller_ida, mhi_cntrl->index); in mhi_register_controller()
1025 destroy_workqueue(mhi_cntrl->hiprio_wq); in mhi_register_controller()
1027 kfree(mhi_cntrl->mhi_cmd); in mhi_register_controller()
1029 kfree(mhi_cntrl->mhi_event); in mhi_register_controller()
1030 vfree(mhi_cntrl->mhi_chan); in mhi_register_controller()
1036 void mhi_unregister_controller(struct mhi_controller *mhi_cntrl) in mhi_unregister_controller() argument
1038 struct mhi_device *mhi_dev = mhi_cntrl->mhi_dev; in mhi_unregister_controller()
1039 struct mhi_chan *mhi_chan = mhi_cntrl->mhi_chan; in mhi_unregister_controller()
1042 mhi_destroy_debugfs(mhi_cntrl); in mhi_unregister_controller()
1044 destroy_workqueue(mhi_cntrl->hiprio_wq); in mhi_unregister_controller()
1045 kfree(mhi_cntrl->mhi_cmd); in mhi_unregister_controller()
1046 kfree(mhi_cntrl->mhi_event); in mhi_unregister_controller()
1049 for (i = 0; i < mhi_cntrl->max_chan; i++, mhi_chan++) { in mhi_unregister_controller()
1055 vfree(mhi_cntrl->mhi_chan); in mhi_unregister_controller()
1060 ida_free(&mhi_controller_ida, mhi_cntrl->index); in mhi_unregister_controller()
1066 struct mhi_controller *mhi_cntrl; in mhi_alloc_controller() local
1068 mhi_cntrl = kzalloc(sizeof(*mhi_cntrl), GFP_KERNEL); in mhi_alloc_controller()
1070 return mhi_cntrl; in mhi_alloc_controller()
1074 void mhi_free_controller(struct mhi_controller *mhi_cntrl) in mhi_free_controller() argument
1076 kfree(mhi_cntrl); in mhi_free_controller()
1080 int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) in mhi_prepare_for_power_up() argument
1082 struct device *dev = &mhi_cntrl->mhi_dev->dev; in mhi_prepare_for_power_up()
1086 mutex_lock(&mhi_cntrl->pm_mutex); in mhi_prepare_for_power_up()
1088 ret = mhi_init_dev_ctxt(mhi_cntrl); in mhi_prepare_for_power_up()
1092 ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, BHIOFF, &bhi_off); in mhi_prepare_for_power_up()
1098 if (bhi_off >= mhi_cntrl->reg_len) { in mhi_prepare_for_power_up()
1100 bhi_off, mhi_cntrl->reg_len); in mhi_prepare_for_power_up()
1104 mhi_cntrl->bhi = mhi_cntrl->regs + bhi_off; in mhi_prepare_for_power_up()
1106 if (mhi_cntrl->fbc_download || mhi_cntrl->rddm_size) { in mhi_prepare_for_power_up()
1107 ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, BHIEOFF, in mhi_prepare_for_power_up()
1114 if (bhie_off >= mhi_cntrl->reg_len) { in mhi_prepare_for_power_up()
1117 bhie_off, mhi_cntrl->reg_len); in mhi_prepare_for_power_up()
1121 mhi_cntrl->bhie = mhi_cntrl->regs + bhie_off; in mhi_prepare_for_power_up()
1124 if (mhi_cntrl->rddm_size) { in mhi_prepare_for_power_up()
1129 memset_io(mhi_cntrl->bhie + BHIE_RXVECADDR_LOW_OFFS, in mhi_prepare_for_power_up()
1135 mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image, in mhi_prepare_for_power_up()
1136 mhi_cntrl->rddm_size); in mhi_prepare_for_power_up()
1137 if (mhi_cntrl->rddm_image) in mhi_prepare_for_power_up()
1138 mhi_rddm_prepare(mhi_cntrl, mhi_cntrl->rddm_image); in mhi_prepare_for_power_up()
1141 mutex_unlock(&mhi_cntrl->pm_mutex); in mhi_prepare_for_power_up()
1146 mhi_deinit_dev_ctxt(mhi_cntrl); in mhi_prepare_for_power_up()
1149 mutex_unlock(&mhi_cntrl->pm_mutex); in mhi_prepare_for_power_up()
1155 void mhi_unprepare_after_power_down(struct mhi_controller *mhi_cntrl) in mhi_unprepare_after_power_down() argument
1157 if (mhi_cntrl->fbc_image) { in mhi_unprepare_after_power_down()
1158 mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->fbc_image); in mhi_unprepare_after_power_down()
1159 mhi_cntrl->fbc_image = NULL; in mhi_unprepare_after_power_down()
1162 if (mhi_cntrl->rddm_image) { in mhi_unprepare_after_power_down()
1163 mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); in mhi_unprepare_after_power_down()
1164 mhi_cntrl->rddm_image = NULL; in mhi_unprepare_after_power_down()
1167 mhi_cntrl->bhi = NULL; in mhi_unprepare_after_power_down()
1168 mhi_cntrl->bhie = NULL; in mhi_unprepare_after_power_down()
1170 mhi_deinit_dev_ctxt(mhi_cntrl); in mhi_unprepare_after_power_down()
1193 struct mhi_device *mhi_alloc_device(struct mhi_controller *mhi_cntrl) in mhi_alloc_device() argument
1207 if (mhi_cntrl->mhi_dev) { in mhi_alloc_device()
1209 dev->parent = &mhi_cntrl->mhi_dev->dev; in mhi_alloc_device()
1212 dev->parent = mhi_cntrl->cntrl_dev; in mhi_alloc_device()
1215 mhi_dev->mhi_cntrl = mhi_cntrl; in mhi_alloc_device()
1224 struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl; in mhi_driver_probe() local
1267 mhi_event = &mhi_cntrl->mhi_event[dl_chan->er_index]; in mhi_driver_probe()
1301 struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl; in mhi_driver_remove() local
1335 mhi_reset_chan(mhi_cntrl, mhi_chan); in mhi_driver_remove()
1354 mhi_deinit_chan_ctxt(mhi_cntrl, mhi_chan); in mhi_driver_remove()