Lines Matching refs:mbox

59 	struct mbox_controller	*mbox;  member
101 struct mbox_chan *sti_mbox_to_channel(struct mbox_controller *mbox, in sti_mbox_to_channel() argument
108 for (i = 0; i < mbox->num_chans; i++) { in sti_mbox_to_channel()
109 chan_info = mbox->chans[i].con_priv; in sti_mbox_to_channel()
113 return &mbox->chans[i]; in sti_mbox_to_channel()
116 dev_err(mbox->dev, in sti_mbox_to_channel()
167 struct mbox_controller *mbox = mdev->mbox; in sti_mbox_irq_to_channel() local
183 chan = sti_mbox_to_channel(mbox, instance, channel); in sti_mbox_irq_to_channel()
185 dev_dbg(mbox->dev, in sti_mbox_irq_to_channel()
307 struct mbox_controller *mbox = chan_info->mdev->mbox; in sti_mbox_shutdown_chan() local
310 for (i = 0; i < mbox->num_chans; i++) in sti_mbox_shutdown_chan()
311 if (chan == &mbox->chans[i]) in sti_mbox_shutdown_chan()
314 if (mbox->num_chans == i) { in sti_mbox_shutdown_chan()
315 dev_warn(mbox->dev, "Request to free non-existent channel\n"); in sti_mbox_shutdown_chan()
325 static struct mbox_chan *sti_mbox_xlate(struct mbox_controller *mbox, in sti_mbox_xlate() argument
328 struct sti_mbox_device *mdev = dev_get_drvdata(mbox->dev); in sti_mbox_xlate()
338 dev_err(mbox->dev, in sti_mbox_xlate()
344 for (i = 0; i < mbox->num_chans; i++) { in sti_mbox_xlate()
345 chan_info = mbox->chans[i].con_priv; in sti_mbox_xlate()
349 mbox->dev == chan_info->mdev->dev && in sti_mbox_xlate()
353 dev_err(mbox->dev, "Channel in use\n"); in sti_mbox_xlate()
362 chan = &mbox->chans[i]; in sti_mbox_xlate()
366 dev_err(mbox->dev, "No free channels left\n"); in sti_mbox_xlate()
370 chan_info = devm_kzalloc(mbox->dev, sizeof(*chan_info), GFP_KERNEL); in sti_mbox_xlate()
380 dev_info(mbox->dev, in sti_mbox_xlate()
410 struct mbox_controller *mbox; in sti_mbox_probe() local
440 mbox = devm_kzalloc(&pdev->dev, sizeof(*mbox), GFP_KERNEL); in sti_mbox_probe()
441 if (!mbox) in sti_mbox_probe()
450 mdev->mbox = mbox; in sti_mbox_probe()
455 mbox->txdone_irq = false; in sti_mbox_probe()
456 mbox->txdone_poll = true; in sti_mbox_probe()
457 mbox->txpoll_period = 100; in sti_mbox_probe()
458 mbox->ops = &sti_mbox_ops; in sti_mbox_probe()
459 mbox->dev = mdev->dev; in sti_mbox_probe()
460 mbox->of_xlate = sti_mbox_xlate; in sti_mbox_probe()
461 mbox->chans = chans; in sti_mbox_probe()
462 mbox->num_chans = STI_MBOX_CHAN_MAX; in sti_mbox_probe()
464 ret = mbox_controller_register(mbox); in sti_mbox_probe()
482 mbox_controller_unregister(mbox); in sti_mbox_probe()
495 mbox_controller_unregister(mdev->mbox); in sti_mbox_remove()