Lines Matching full:vdev

48 static struct rproc_vdev *vdev_to_rvdev(struct virtio_device *vdev)  in vdev_to_rvdev()  argument
52 pdev = container_of(vdev->dev.parent, struct platform_device, dev); in vdev_to_rvdev()
57 static struct rproc *vdev_to_rproc(struct virtio_device *vdev) in vdev_to_rproc() argument
59 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in vdev_to_rproc()
103 static struct virtqueue *rp_find_vq(struct virtio_device *vdev, in rp_find_vq() argument
108 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rp_find_vq()
109 struct rproc *rproc = vdev_to_rproc(vdev); in rp_find_vq()
126 mem = rproc_find_carveout_by_name(rproc, "vdev%dvring%d", rvdev->index, in rp_find_vq()
146 vq = vring_new_virtqueue(id, num, rvring->align, vdev, false, ctx, in rp_find_vq()
166 static void __rproc_virtio_del_vqs(struct virtio_device *vdev) in __rproc_virtio_del_vqs() argument
171 list_for_each_entry_safe(vq, n, &vdev->vqs, list) { in __rproc_virtio_del_vqs()
178 static void rproc_virtio_del_vqs(struct virtio_device *vdev) in rproc_virtio_del_vqs() argument
180 __rproc_virtio_del_vqs(vdev); in rproc_virtio_del_vqs()
183 static int rproc_virtio_find_vqs(struct virtio_device *vdev, unsigned int nvqs, in rproc_virtio_find_vqs() argument
198 vqs[i] = rp_find_vq(vdev, queue_idx++, vqi->callback, in rproc_virtio_find_vqs()
209 __rproc_virtio_del_vqs(vdev); in rproc_virtio_find_vqs()
213 static u8 rproc_virtio_get_status(struct virtio_device *vdev) in rproc_virtio_get_status() argument
215 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_get_status()
223 static void rproc_virtio_set_status(struct virtio_device *vdev, u8 status) in rproc_virtio_set_status() argument
225 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_set_status()
231 dev_dbg(&vdev->dev, "status: %d\n", status); in rproc_virtio_set_status()
234 static void rproc_virtio_reset(struct virtio_device *vdev) in rproc_virtio_reset() argument
236 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_reset()
242 dev_dbg(&vdev->dev, "reset !\n"); in rproc_virtio_reset()
245 /* provide the vdev features as retrieved from the firmware */
246 static u64 rproc_virtio_get_features(struct virtio_device *vdev) in rproc_virtio_get_features() argument
248 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_get_features()
256 static void rproc_transport_features(struct virtio_device *vdev) in rproc_transport_features() argument
263 __virtio_clear_bit(vdev, VIRTIO_F_RING_PACKED); in rproc_transport_features()
266 static int rproc_virtio_finalize_features(struct virtio_device *vdev) in rproc_virtio_finalize_features() argument
268 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_finalize_features()
274 vring_transport_features(vdev); in rproc_virtio_finalize_features()
277 rproc_transport_features(vdev); in rproc_virtio_finalize_features()
280 BUG_ON((u32)vdev->features != vdev->features); in rproc_virtio_finalize_features()
283 * Remember the finalized features of our vdev, and provide it in rproc_virtio_finalize_features()
286 rsc->gfeatures = vdev->features; in rproc_virtio_finalize_features()
291 static void rproc_virtio_get(struct virtio_device *vdev, unsigned int offset, in rproc_virtio_get() argument
294 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_get()
302 dev_err(&vdev->dev, "rproc_virtio_get: access out of bounds\n"); in rproc_virtio_get()
309 static void rproc_virtio_set(struct virtio_device *vdev, unsigned int offset, in rproc_virtio_set() argument
312 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_set()
320 dev_err(&vdev->dev, "rproc_virtio_set: access out of bounds\n"); in rproc_virtio_set()
340 * This function is called whenever vdev is released, and is responsible
341 * to decrement the remote processor's refcount which was taken when vdev was
349 struct virtio_device *vdev = dev_to_virtio(dev); in rproc_virtio_dev_release() local
350 struct rproc_vdev *rvdev = vdev_to_rvdev(vdev); in rproc_virtio_dev_release()
352 kfree(vdev); in rproc_virtio_dev_release()
362 * @rvdev: the remote vdev
365 * This function registers a virtio device. This vdev's partent is
374 struct virtio_device *vdev; in rproc_add_virtio_dev() local
384 /* Try to find dedicated vdev buffer carveout */ in rproc_add_virtio_dev()
385 mem = rproc_find_carveout_by_name(rproc, "vdev%dbuffer", rvdev->index); in rproc_add_virtio_dev()
392 /* Associate reserved memory to vdev device */ in rproc_add_virtio_dev()
401 dev_warn(dev, "vdev %d buffer already mapped\n", in rproc_add_virtio_dev()
409 /* Associate vdev buffer memory pool to vdev subdev */ in rproc_add_virtio_dev()
433 vdev = kzalloc(sizeof(*vdev), GFP_KERNEL); in rproc_add_virtio_dev()
434 if (!vdev) { in rproc_add_virtio_dev()
438 vdev->id.device = id, in rproc_add_virtio_dev()
439 vdev->config = &rproc_virtio_config_ops, in rproc_add_virtio_dev()
440 vdev->dev.parent = dev; in rproc_add_virtio_dev()
441 vdev->dev.release = rproc_virtio_dev_release; in rproc_add_virtio_dev()
443 /* Reference the vdev and vring allocations */ in rproc_add_virtio_dev()
446 ret = register_virtio_device(vdev); in rproc_add_virtio_dev()
448 put_device(&vdev->dev); in rproc_add_virtio_dev()
449 dev_err(dev, "failed to register vdev: %d\n", ret); in rproc_add_virtio_dev()
453 dev_info(dev, "registered %s (type %d)\n", dev_name(&vdev->dev), id); in rproc_add_virtio_dev()
470 struct virtio_device *vdev = dev_to_virtio(dev); in rproc_remove_virtio_dev() local
472 unregister_virtio_device(vdev); in rproc_remove_virtio_dev()
491 dev_warn(dev, "can't remove vdev child device: %d\n", ret); in rproc_vdev_do_stop()
558 * here, because the platform device or the vdev device will indirectly in rproc_virtio_probe()