Lines Matching refs:mdev

141 unsigned int mbox_read_reg(struct omap_mbox_device *mdev, size_t ofs)  in mbox_read_reg()  argument
143 return __raw_readl(mdev->mbox_base + ofs); in mbox_read_reg()
147 void mbox_write_reg(struct omap_mbox_device *mdev, u32 val, size_t ofs) in mbox_write_reg() argument
149 __raw_writel(val, mdev->mbox_base + ofs); in mbox_write_reg()
438 static struct omap_mbox *omap_mbox_device_find(struct omap_mbox_device *mdev, in omap_mbox_device_find() argument
442 struct omap_mbox **mboxes = mdev->mboxes; in omap_mbox_device_find()
462 struct omap_mbox_device *mdev; in omap_mbox_request_channel() local
477 list_for_each_entry(mdev, &omap_mbox_devices, elem) { in omap_mbox_request_channel()
478 mbox = omap_mbox_device_find(mdev, chan_name); in omap_mbox_request_channel()
509 static int omap_mbox_register(struct omap_mbox_device *mdev) in omap_mbox_register() argument
515 if (!mdev || !mdev->mboxes) in omap_mbox_register()
518 mboxes = mdev->mboxes; in omap_mbox_register()
521 mbox->dev = device_create(&omap_mbox_class, mdev->dev, in omap_mbox_register()
530 list_add(&mdev->elem, &omap_mbox_devices); in omap_mbox_register()
533 ret = mbox_controller_register(&mdev->controller); in omap_mbox_register()
543 static int omap_mbox_unregister(struct omap_mbox_device *mdev) in omap_mbox_unregister() argument
548 if (!mdev || !mdev->mboxes) in omap_mbox_unregister()
552 list_del(&mdev->elem); in omap_mbox_unregister()
555 mbox_controller_unregister(&mdev->controller); in omap_mbox_unregister()
557 mboxes = mdev->mboxes; in omap_mbox_unregister()
566 struct omap_mbox_device *mdev = mbox->parent; in omap_mbox_chan_startup() local
569 mutex_lock(&mdev->cfg_lock); in omap_mbox_chan_startup()
570 pm_runtime_get_sync(mdev->dev); in omap_mbox_chan_startup()
573 pm_runtime_put_sync(mdev->dev); in omap_mbox_chan_startup()
574 mutex_unlock(&mdev->cfg_lock); in omap_mbox_chan_startup()
581 struct omap_mbox_device *mdev = mbox->parent; in omap_mbox_chan_shutdown() local
583 mutex_lock(&mdev->cfg_lock); in omap_mbox_chan_shutdown()
585 pm_runtime_put_sync(mdev->dev); in omap_mbox_chan_shutdown()
586 mutex_unlock(&mdev->cfg_lock); in omap_mbox_chan_shutdown()
637 struct omap_mbox_device *mdev; in omap_mbox_of_xlate() local
640 mdev = container_of(controller, struct omap_mbox_device, controller); in omap_mbox_of_xlate()
641 if (WARN_ON(!mdev)) in omap_mbox_of_xlate()
651 mbox = omap_mbox_device_find(mdev, node->name); in omap_mbox_of_xlate()
665 struct omap_mbox_device *mdev; in omap_mbox_probe() local
750 mdev = devm_kzalloc(&pdev->dev, sizeof(*mdev), GFP_KERNEL); in omap_mbox_probe()
751 if (!mdev) in omap_mbox_probe()
755 mdev->mbox_base = devm_ioremap_resource(&pdev->dev, mem); in omap_mbox_probe()
756 if (IS_ERR(mdev->mbox_base)) in omap_mbox_probe()
757 return PTR_ERR(mdev->mbox_base); in omap_mbox_probe()
796 mbox->parent = mdev; in omap_mbox_probe()
806 mutex_init(&mdev->cfg_lock); in omap_mbox_probe()
807 mdev->dev = &pdev->dev; in omap_mbox_probe()
808 mdev->num_users = num_users; in omap_mbox_probe()
809 mdev->num_fifos = num_fifos; in omap_mbox_probe()
810 mdev->mboxes = list; in omap_mbox_probe()
813 mdev->controller.txdone_irq = true; in omap_mbox_probe()
814 mdev->controller.dev = mdev->dev; in omap_mbox_probe()
815 mdev->controller.ops = &omap_mbox_chan_ops; in omap_mbox_probe()
816 mdev->controller.chans = chnls; in omap_mbox_probe()
817 mdev->controller.num_chans = info_count; in omap_mbox_probe()
818 mdev->controller.of_xlate = omap_mbox_of_xlate; in omap_mbox_probe()
819 ret = omap_mbox_register(mdev); in omap_mbox_probe()
823 platform_set_drvdata(pdev, mdev); in omap_mbox_probe()
824 pm_runtime_enable(mdev->dev); in omap_mbox_probe()
826 ret = pm_runtime_get_sync(mdev->dev); in omap_mbox_probe()
828 pm_runtime_put_noidle(mdev->dev); in omap_mbox_probe()
836 l = mbox_read_reg(mdev, MAILBOX_REVISION); in omap_mbox_probe()
837 dev_info(mdev->dev, "omap mailbox rev 0x%x\n", l); in omap_mbox_probe()
839 ret = pm_runtime_put_sync(mdev->dev); in omap_mbox_probe()
847 pm_runtime_disable(mdev->dev); in omap_mbox_probe()
848 omap_mbox_unregister(mdev); in omap_mbox_probe()
854 struct omap_mbox_device *mdev = platform_get_drvdata(pdev); in omap_mbox_remove() local
856 pm_runtime_disable(mdev->dev); in omap_mbox_remove()
857 omap_mbox_unregister(mdev); in omap_mbox_remove()