Lines Matching refs:mtk_subdev
52 struct mtk_rpmsg_rproc_subdev *mtk_subdev; member
57 struct mtk_rpmsg_rproc_subdev *mtk_subdev; member
85 __mtk_create_ept(struct mtk_rpmsg_rproc_subdev *mtk_subdev, in __mtk_create_ept() argument
91 struct platform_device *pdev = mtk_subdev->pdev; in __mtk_create_ept()
97 mept->mtk_subdev = mtk_subdev; in __mtk_create_ept()
108 ret = mtk_subdev->info->register_ipi(pdev, id, mtk_rpmsg_ipi_handler, in __mtk_create_ept()
123 struct mtk_rpmsg_rproc_subdev *mtk_subdev = in mtk_rpmsg_create_ept() local
124 to_mtk_rpmsg_device(rpdev)->mtk_subdev; in mtk_rpmsg_create_ept()
126 return __mtk_create_ept(mtk_subdev, rpdev, cb, priv, chinfo.src); in mtk_rpmsg_create_ept()
131 struct mtk_rpmsg_rproc_subdev *mtk_subdev = in mtk_rpmsg_destroy_ept() local
132 to_mtk_rpmsg_endpoint(ept)->mtk_subdev; in mtk_rpmsg_destroy_ept()
134 mtk_subdev->info->unregister_ipi(mtk_subdev->pdev, ept->addr); in mtk_rpmsg_destroy_ept()
140 struct mtk_rpmsg_rproc_subdev *mtk_subdev = in mtk_rpmsg_send() local
141 to_mtk_rpmsg_endpoint(ept)->mtk_subdev; in mtk_rpmsg_send()
143 return mtk_subdev->info->send_ipi(mtk_subdev->pdev, ept->addr, data, in mtk_rpmsg_send()
149 struct mtk_rpmsg_rproc_subdev *mtk_subdev = in mtk_rpmsg_trysend() local
150 to_mtk_rpmsg_endpoint(ept)->mtk_subdev; in mtk_rpmsg_trysend()
156 return mtk_subdev->info->send_ipi(mtk_subdev->pdev, ept->addr, data, in mtk_rpmsg_trysend()
197 static int mtk_rpmsg_register_device(struct mtk_rpmsg_rproc_subdev *mtk_subdev, in mtk_rpmsg_register_device() argument
202 struct platform_device *pdev = mtk_subdev->pdev; in mtk_rpmsg_register_device()
208 mdev->mtk_subdev = mtk_subdev; in mtk_rpmsg_register_device()
248 static int mtk_rpmsg_create_device(struct mtk_rpmsg_rproc_subdev *mtk_subdev, in mtk_rpmsg_create_device() argument
260 mutex_lock(&mtk_subdev->channels_lock); in mtk_rpmsg_create_device()
261 list_add(&info->list, &mtk_subdev->channels); in mtk_rpmsg_create_device()
262 mutex_unlock(&mtk_subdev->channels_lock); in mtk_rpmsg_create_device()
264 schedule_work(&mtk_subdev->register_work); in mtk_rpmsg_create_device()
272 struct mtk_rpmsg_rproc_subdev *mtk_subdev = priv; in mtk_rpmsg_ns_cb() local
273 struct device *dev = &mtk_subdev->pdev->dev; in mtk_rpmsg_ns_cb()
298 ret = mtk_rpmsg_create_device(mtk_subdev, msg->name, msg->addr); in mtk_rpmsg_ns_cb()
309 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_prepare() local
312 if (mtk_subdev->info->ns_ipi_id >= 0) { in mtk_rpmsg_prepare()
313 mtk_subdev->ns_ept = in mtk_rpmsg_prepare()
314 __mtk_create_ept(mtk_subdev, NULL, mtk_rpmsg_ns_cb, in mtk_rpmsg_prepare()
315 mtk_subdev, in mtk_rpmsg_prepare()
316 mtk_subdev->info->ns_ipi_id); in mtk_rpmsg_prepare()
317 if (!mtk_subdev->ns_ept) { in mtk_rpmsg_prepare()
318 dev_err(&mtk_subdev->pdev->dev, in mtk_rpmsg_prepare()
329 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_unprepare() local
331 if (mtk_subdev->ns_ept) { in mtk_rpmsg_unprepare()
332 mtk_rpmsg_destroy_ept(mtk_subdev->ns_ept); in mtk_rpmsg_unprepare()
333 mtk_subdev->ns_ept = NULL; in mtk_rpmsg_unprepare()
340 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_stop() local
341 struct device *dev = &mtk_subdev->pdev->dev; in mtk_rpmsg_stop()
347 if (mtk_subdev->ns_ept) { in mtk_rpmsg_stop()
348 mtk_rpmsg_destroy_ept(mtk_subdev->ns_ept); in mtk_rpmsg_stop()
349 mtk_subdev->ns_ept = NULL; in mtk_rpmsg_stop()
352 cancel_work_sync(&mtk_subdev->register_work); in mtk_rpmsg_stop()
354 mutex_lock(&mtk_subdev->channels_lock); in mtk_rpmsg_stop()
355 list_for_each_entry(info, &mtk_subdev->channels, list) { in mtk_rpmsg_stop()
368 &mtk_subdev->channels, list) { in mtk_rpmsg_stop()
372 mutex_unlock(&mtk_subdev->channels_lock); in mtk_rpmsg_stop()
379 struct mtk_rpmsg_rproc_subdev *mtk_subdev; in mtk_rpmsg_create_rproc_subdev() local
381 mtk_subdev = kzalloc(sizeof(*mtk_subdev), GFP_KERNEL); in mtk_rpmsg_create_rproc_subdev()
382 if (!mtk_subdev) in mtk_rpmsg_create_rproc_subdev()
385 mtk_subdev->pdev = pdev; in mtk_rpmsg_create_rproc_subdev()
386 mtk_subdev->subdev.prepare = mtk_rpmsg_prepare; in mtk_rpmsg_create_rproc_subdev()
387 mtk_subdev->subdev.stop = mtk_rpmsg_stop; in mtk_rpmsg_create_rproc_subdev()
388 mtk_subdev->subdev.unprepare = mtk_rpmsg_unprepare; in mtk_rpmsg_create_rproc_subdev()
389 mtk_subdev->info = info; in mtk_rpmsg_create_rproc_subdev()
390 INIT_LIST_HEAD(&mtk_subdev->channels); in mtk_rpmsg_create_rproc_subdev()
391 INIT_WORK(&mtk_subdev->register_work, in mtk_rpmsg_create_rproc_subdev()
393 mutex_init(&mtk_subdev->channels_lock); in mtk_rpmsg_create_rproc_subdev()
395 return &mtk_subdev->subdev; in mtk_rpmsg_create_rproc_subdev()
401 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_destroy_rproc_subdev() local
403 kfree(mtk_subdev); in mtk_rpmsg_destroy_rproc_subdev()