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()
250 static int mtk_rpmsg_create_device(struct mtk_rpmsg_rproc_subdev *mtk_subdev, in mtk_rpmsg_create_device() argument
262 mutex_lock(&mtk_subdev->channels_lock); in mtk_rpmsg_create_device()
263 list_add(&info->list, &mtk_subdev->channels); in mtk_rpmsg_create_device()
264 mutex_unlock(&mtk_subdev->channels_lock); in mtk_rpmsg_create_device()
266 schedule_work(&mtk_subdev->register_work); in mtk_rpmsg_create_device()
274 struct mtk_rpmsg_rproc_subdev *mtk_subdev = priv; in mtk_rpmsg_ns_cb() local
275 struct device *dev = &mtk_subdev->pdev->dev; in mtk_rpmsg_ns_cb()
300 ret = mtk_rpmsg_create_device(mtk_subdev, msg->name, msg->addr); in mtk_rpmsg_ns_cb()
311 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_prepare() local
314 if (mtk_subdev->info->ns_ipi_id >= 0) { in mtk_rpmsg_prepare()
315 mtk_subdev->ns_ept = in mtk_rpmsg_prepare()
316 __mtk_create_ept(mtk_subdev, NULL, mtk_rpmsg_ns_cb, in mtk_rpmsg_prepare()
317 mtk_subdev, in mtk_rpmsg_prepare()
318 mtk_subdev->info->ns_ipi_id); in mtk_rpmsg_prepare()
319 if (!mtk_subdev->ns_ept) { in mtk_rpmsg_prepare()
320 dev_err(&mtk_subdev->pdev->dev, in mtk_rpmsg_prepare()
331 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_unprepare() local
333 if (mtk_subdev->ns_ept) { in mtk_rpmsg_unprepare()
334 mtk_rpmsg_destroy_ept(mtk_subdev->ns_ept); in mtk_rpmsg_unprepare()
335 mtk_subdev->ns_ept = NULL; in mtk_rpmsg_unprepare()
342 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_stop() local
343 struct device *dev = &mtk_subdev->pdev->dev; in mtk_rpmsg_stop()
349 if (mtk_subdev->ns_ept) { in mtk_rpmsg_stop()
350 mtk_rpmsg_destroy_ept(mtk_subdev->ns_ept); in mtk_rpmsg_stop()
351 mtk_subdev->ns_ept = NULL; in mtk_rpmsg_stop()
354 cancel_work_sync(&mtk_subdev->register_work); in mtk_rpmsg_stop()
356 mutex_lock(&mtk_subdev->channels_lock); in mtk_rpmsg_stop()
357 list_for_each_entry(info, &mtk_subdev->channels, list) { in mtk_rpmsg_stop()
370 &mtk_subdev->channels, list) { in mtk_rpmsg_stop()
374 mutex_unlock(&mtk_subdev->channels_lock); in mtk_rpmsg_stop()
381 struct mtk_rpmsg_rproc_subdev *mtk_subdev; in mtk_rpmsg_create_rproc_subdev() local
383 mtk_subdev = kzalloc(sizeof(*mtk_subdev), GFP_KERNEL); in mtk_rpmsg_create_rproc_subdev()
384 if (!mtk_subdev) in mtk_rpmsg_create_rproc_subdev()
387 mtk_subdev->pdev = pdev; in mtk_rpmsg_create_rproc_subdev()
388 mtk_subdev->subdev.prepare = mtk_rpmsg_prepare; in mtk_rpmsg_create_rproc_subdev()
389 mtk_subdev->subdev.stop = mtk_rpmsg_stop; in mtk_rpmsg_create_rproc_subdev()
390 mtk_subdev->subdev.unprepare = mtk_rpmsg_unprepare; in mtk_rpmsg_create_rproc_subdev()
391 mtk_subdev->info = info; in mtk_rpmsg_create_rproc_subdev()
392 INIT_LIST_HEAD(&mtk_subdev->channels); in mtk_rpmsg_create_rproc_subdev()
393 INIT_WORK(&mtk_subdev->register_work, in mtk_rpmsg_create_rproc_subdev()
395 mutex_init(&mtk_subdev->channels_lock); in mtk_rpmsg_create_rproc_subdev()
397 return &mtk_subdev->subdev; in mtk_rpmsg_create_rproc_subdev()
403 struct mtk_rpmsg_rproc_subdev *mtk_subdev = to_mtk_subdev(subdev); in mtk_rpmsg_destroy_rproc_subdev() local
405 kfree(mtk_subdev); in mtk_rpmsg_destroy_rproc_subdev()