Lines Matching refs:mdev
145 unsigned int mbox_read_reg(struct omap_mbox_device *mdev, size_t ofs) in mbox_read_reg() argument
147 return __raw_readl(mdev->mbox_base + ofs); in mbox_read_reg()
151 void mbox_write_reg(struct omap_mbox_device *mdev, u32 val, size_t ofs) in mbox_write_reg() argument
153 __raw_writel(val, mdev->mbox_base + ofs); in mbox_write_reg()
445 static struct omap_mbox *omap_mbox_device_find(struct omap_mbox_device *mdev, in omap_mbox_device_find() argument
449 struct omap_mbox **mboxes = mdev->mboxes; in omap_mbox_device_find()
469 struct omap_mbox_device *mdev; in omap_mbox_request_channel() local
484 list_for_each_entry(mdev, &omap_mbox_devices, elem) { in omap_mbox_request_channel()
485 mbox = omap_mbox_device_find(mdev, chan_name); in omap_mbox_request_channel()
516 static int omap_mbox_register(struct omap_mbox_device *mdev) in omap_mbox_register() argument
522 if (!mdev || !mdev->mboxes) in omap_mbox_register()
525 mboxes = mdev->mboxes; in omap_mbox_register()
528 mbox->dev = device_create(&omap_mbox_class, mdev->dev, in omap_mbox_register()
537 list_add(&mdev->elem, &omap_mbox_devices); in omap_mbox_register()
540 ret = mbox_controller_register(&mdev->controller); in omap_mbox_register()
550 static int omap_mbox_unregister(struct omap_mbox_device *mdev) in omap_mbox_unregister() argument
555 if (!mdev || !mdev->mboxes) in omap_mbox_unregister()
559 list_del(&mdev->elem); in omap_mbox_unregister()
562 mbox_controller_unregister(&mdev->controller); in omap_mbox_unregister()
564 mboxes = mdev->mboxes; in omap_mbox_unregister()
573 struct omap_mbox_device *mdev = mbox->parent; in omap_mbox_chan_startup() local
576 mutex_lock(&mdev->cfg_lock); in omap_mbox_chan_startup()
577 pm_runtime_get_sync(mdev->dev); in omap_mbox_chan_startup()
580 pm_runtime_put_sync(mdev->dev); in omap_mbox_chan_startup()
581 mutex_unlock(&mdev->cfg_lock); in omap_mbox_chan_startup()
588 struct omap_mbox_device *mdev = mbox->parent; in omap_mbox_chan_shutdown() local
590 mutex_lock(&mdev->cfg_lock); in omap_mbox_chan_shutdown()
592 pm_runtime_put_sync(mdev->dev); in omap_mbox_chan_shutdown()
593 mutex_unlock(&mdev->cfg_lock); in omap_mbox_chan_shutdown()
674 struct omap_mbox_device *mdev; in omap_mbox_of_xlate() local
677 mdev = container_of(controller, struct omap_mbox_device, controller); in omap_mbox_of_xlate()
678 if (WARN_ON(!mdev)) in omap_mbox_of_xlate()
688 mbox = omap_mbox_device_find(mdev, node->name); in omap_mbox_of_xlate()
702 struct omap_mbox_device *mdev; in omap_mbox_probe() local
790 mdev = devm_kzalloc(&pdev->dev, sizeof(*mdev), GFP_KERNEL); in omap_mbox_probe()
791 if (!mdev) in omap_mbox_probe()
795 mdev->mbox_base = devm_ioremap_resource(&pdev->dev, mem); in omap_mbox_probe()
796 if (IS_ERR(mdev->mbox_base)) in omap_mbox_probe()
797 return PTR_ERR(mdev->mbox_base); in omap_mbox_probe()
837 mbox->parent = mdev; in omap_mbox_probe()
847 mutex_init(&mdev->cfg_lock); in omap_mbox_probe()
848 mdev->dev = &pdev->dev; in omap_mbox_probe()
849 mdev->num_users = num_users; in omap_mbox_probe()
850 mdev->num_fifos = num_fifos; in omap_mbox_probe()
851 mdev->mboxes = list; in omap_mbox_probe()
854 mdev->controller.txdone_irq = true; in omap_mbox_probe()
855 mdev->controller.dev = mdev->dev; in omap_mbox_probe()
856 mdev->controller.ops = &omap_mbox_chan_ops; in omap_mbox_probe()
857 mdev->controller.chans = chnls; in omap_mbox_probe()
858 mdev->controller.num_chans = info_count; in omap_mbox_probe()
859 mdev->controller.of_xlate = omap_mbox_of_xlate; in omap_mbox_probe()
860 ret = omap_mbox_register(mdev); in omap_mbox_probe()
864 platform_set_drvdata(pdev, mdev); in omap_mbox_probe()
865 pm_runtime_enable(mdev->dev); in omap_mbox_probe()
867 ret = pm_runtime_get_sync(mdev->dev); in omap_mbox_probe()
869 pm_runtime_put_noidle(mdev->dev); in omap_mbox_probe()
877 l = mbox_read_reg(mdev, MAILBOX_REVISION); in omap_mbox_probe()
878 dev_info(mdev->dev, "omap mailbox rev 0x%x\n", l); in omap_mbox_probe()
880 ret = pm_runtime_put_sync(mdev->dev); in omap_mbox_probe()
888 pm_runtime_disable(mdev->dev); in omap_mbox_probe()
889 omap_mbox_unregister(mdev); in omap_mbox_probe()
895 struct omap_mbox_device *mdev = platform_get_drvdata(pdev); in omap_mbox_remove() local
897 pm_runtime_disable(mdev->dev); in omap_mbox_remove()
898 omap_mbox_unregister(mdev); in omap_mbox_remove()