Lines Matching defs:mdev
132 unsigned int mbox_read_reg(struct omap_mbox_device *mdev, size_t ofs)
134 return __raw_readl(mdev->mbox_base + ofs);
138 void mbox_write_reg(struct omap_mbox_device *mdev, u32 val, size_t ofs)
140 __raw_writel(val, mdev->mbox_base + ofs);
395 static struct omap_mbox *omap_mbox_device_find(struct omap_mbox_device *mdev,
399 struct omap_mbox **mboxes = mdev->mboxes;
419 struct omap_mbox_device *mdev;
432 list_for_each_entry(mdev, &omap_mbox_devices, elem) {
433 mbox = omap_mbox_device_find(mdev, chan_name);
452 static int omap_mbox_register(struct omap_mbox_device *mdev)
458 if (!mdev || !mdev->mboxes)
461 mboxes = mdev->mboxes;
465 mbox->dev = device_create(&omap_mbox_class, mdev->dev,
474 list_add(&mdev->elem, &omap_mbox_devices);
477 ret = devm_mbox_controller_register(mdev->dev, &mdev->controller);
487 static int omap_mbox_unregister(struct omap_mbox_device *mdev)
492 if (!mdev || !mdev->mboxes)
496 list_del(&mdev->elem);
499 mboxes = mdev->mboxes;
508 struct omap_mbox_device *mdev = mbox->parent;
511 mutex_lock(&mdev->cfg_lock);
512 pm_runtime_get_sync(mdev->dev);
515 pm_runtime_put_sync(mdev->dev);
516 mutex_unlock(&mdev->cfg_lock);
523 struct omap_mbox_device *mdev = mbox->parent;
525 mutex_lock(&mdev->cfg_lock);
527 pm_runtime_put_sync(mdev->dev);
528 mutex_unlock(&mdev->cfg_lock);
589 struct omap_mbox_device *mdev = dev_get_drvdata(dev);
595 for (fifo = 0; fifo < mdev->num_fifos; fifo++) {
596 if (mbox_read_reg(mdev, MAILBOX_MSGSTATUS(fifo))) {
597 dev_err(mdev->dev, "fifo %d has unexpected unread messages\n",
603 for (usr = 0; usr < mdev->num_users; usr++) {
604 reg = MAILBOX_IRQENABLE(mdev->intr_type, usr);
605 mdev->irq_ctx[usr] = mbox_read_reg(mdev, reg);
613 struct omap_mbox_device *mdev = dev_get_drvdata(dev);
619 for (usr = 0; usr < mdev->num_users; usr++) {
620 reg = MAILBOX_IRQENABLE(mdev->intr_type, usr);
621 mbox_write_reg(mdev, mdev->irq_ctx[usr], reg);
667 struct omap_mbox_device *mdev;
670 mdev = container_of(controller, struct omap_mbox_device, controller);
671 if (WARN_ON(!mdev))
681 mbox = omap_mbox_device_find(mdev, node->name);
692 struct omap_mbox_device *mdev;
759 mdev = devm_kzalloc(&pdev->dev, sizeof(*mdev), GFP_KERNEL);
760 if (!mdev)
763 mdev->mbox_base = devm_platform_ioremap_resource(pdev, 0);
764 if (IS_ERR(mdev->mbox_base))
765 return PTR_ERR(mdev->mbox_base);
767 mdev->irq_ctx = devm_kcalloc(&pdev->dev, num_users, sizeof(u32),
769 if (!mdev->irq_ctx)
810 mbox->parent = mdev;
820 mutex_init(&mdev->cfg_lock);
821 mdev->dev = &pdev->dev;
822 mdev->num_users = num_users;
823 mdev->num_fifos = num_fifos;
824 mdev->intr_type = intr_type;
825 mdev->mboxes = list;
831 mdev->controller.txdone_irq = true;
832 mdev->controller.dev = mdev->dev;
833 mdev->controller.ops = &omap_mbox_chan_ops;
834 mdev->controller.chans = chnls;
835 mdev->controller.num_chans = info_count;
836 mdev->controller.of_xlate = omap_mbox_of_xlate;
837 ret = omap_mbox_register(mdev);
841 platform_set_drvdata(pdev, mdev);
842 pm_runtime_enable(mdev->dev);
844 ret = pm_runtime_resume_and_get(mdev->dev);
852 l = mbox_read_reg(mdev, MAILBOX_REVISION);
853 dev_info(mdev->dev, "omap mailbox rev 0x%x\n", l);
855 ret = pm_runtime_put_sync(mdev->dev);
863 pm_runtime_disable(mdev->dev);
864 omap_mbox_unregister(mdev);
870 struct omap_mbox_device *mdev = platform_get_drvdata(pdev);
872 pm_runtime_disable(mdev->dev);
873 omap_mbox_unregister(mdev);