Lines Matching defs:mhu

48  * @mhu: Pointer to parent mailbox device
53 struct arm_mhu *mhu;
78 void __iomem *base = chan_info->mhu->mlink[chan_info->pchan].rx_reg;
83 static unsigned int mhu_db_mbox_irq_to_pchan_num(struct arm_mhu *mhu, int irq)
88 if (mhu->mlink[pchan].irq == irq)
94 mhu_db_mbox_irq_to_channel(struct arm_mhu *mhu, unsigned int pchan)
99 struct mbox_controller *mbox = &mhu->mbox;
100 void __iomem *base = mhu->mlink[pchan].rx_reg;
126 struct arm_mhu *mhu = data;
127 unsigned int pchan = mhu_db_mbox_irq_to_pchan_num(mhu, irq);
129 while (NULL != (chan = mhu_db_mbox_irq_to_channel(mhu, pchan))) {
140 void __iomem *base = chan_info->mhu->mlink[chan_info->pchan].tx_reg;
151 void __iomem *base = chan_info->mhu->mlink[chan_info->pchan].tx_reg;
168 struct mbox_controller *mbox = &chan_info->mhu->mbox;
189 struct arm_mhu *mhu = dev_get_drvdata(mbox->dev);
228 chan_info->mhu = mhu;
251 struct arm_mhu *mhu;
259 if (!of_device_is_compatible(np, "arm,mhu-doorbell"))
275 mhu = devm_kzalloc(dev, sizeof(*mhu), GFP_KERNEL);
276 if (!mhu)
279 mhu->base = devm_ioremap_resource(dev, &adev->res);
280 if (IS_ERR(mhu->base))
281 return PTR_ERR(mhu->base);
287 mhu->dev = dev;
288 mhu->mbox.dev = dev;
289 mhu->mbox.chans = chans;
290 mhu->mbox.num_chans = max_chans;
291 mhu->mbox.txdone_irq = false;
292 mhu->mbox.txdone_poll = true;
293 mhu->mbox.txpoll_period = 1;
295 mhu->mbox.of_xlate = mhu_db_mbox_xlate;
296 amba_set_drvdata(adev, mhu);
298 mhu->mbox.ops = &mhu_db_ops;
300 err = devm_mbox_controller_register(dev, &mhu->mbox);
307 int irq = mhu->mlink[i].irq = adev->irq[i];
314 mhu->mlink[i].rx_reg = mhu->base + mhu_reg[i];
315 mhu->mlink[i].tx_reg = mhu->mlink[i].rx_reg + TX_REG_OFFSET;
319 IRQF_ONESHOT, "mhu_db_link", mhu);
322 mbox_controller_unregister(&mhu->mbox);
342 .name = "mhu-doorbell",